数组

1、数组的定义

数组是用来存储同一类型若干数据的容器。数组是一种引用数据类型

数组定义语法:

数据类型[]  数组名 = new  数据类型[长度]; (建议用这种)

或者:数据类型  数组名[] = new  数据类型[长度];

如:int [] data1 = new int[50];   //定义数组存储50个整型的数据

double[] data2 = new double[40];  //定义数组存储40个小数

char[] data3 = new char[20];    //定义数组存储20个字符

boolean[] data4 = new boolean[30]; //定义数组存储30个布尔值

String[] data5 = new String[10];    //定义数组存储10String字符串,初始化 data5[i] = null

Student[] data6 = new Student[60];  //定义数组存储60Student对象,初始化 data6[i] = null

new运算符在堆中分配一块连续的存储空间,这块连续存储空间可以存储5int类型的数据,把这块存储空间的引用(起始地址)赋值给数组名 data,data数组名存储的是堆中数组的起始地址。

2、访问数组元素

通过索引值(下标)来访问数组元素,格式:数组名[索引值] = 值 ;

如:int[] data = new int[3]; 

data[0] = 123; data[1] = 456; data[2] = 789;

data[3] = 123; //运行后会产生 java.lang.ArrayIndexOutOfBoundsException:数组下标越界异常

遍历数组

for( int i = 0 ; i < data.length ; i++ ){
    System.out.println( data[i] + "\t");
}
//或者用foreach循环
for( int aa : data2 ){
    System.out.println( aa );
}

定义了数组之后 ,系统会给数组元素默认初始化

数据类型 默认初始值
整型(byte、short、int、long) 0
浮点型(float、double) 0.0
字符型char 空 '\u0000'
String null
布尔Boolean false
引用数据类型(类、接口) null

数组的动态初始化先定义数组,再给数组的元素赋值

如:int [] a = new Int[2]; a[0] = 1; a[1] = 2;

数组的静态初始化在定义数组的同时就给数组的元素赋值

如:int [] data3 = {1,2,3,4,5,6};

数组名之间可以相互赋值

3、数组扩容

数组扩容其实就是定义一个更大的数组,把原来数组中的元素复制到新数组中,让原来的数组名指向新的数组。

public class ArrayExpansion {
    public static void main(String[] args) {
        int [] data = {34,12,56,87,66};
//1)定义一个更大的数组
     //int [] newdata = new  int[ data.length + 1 ];   //新数组只比原来数组长度大1个
     //int [] newdata = new  int[ data.length * 2 ];   //新数组长度是原来数组长度的两倍
        int [] newdata = new  int[ data.length  + (data.length / 2) ];   //新数组长度是原来数组长度的1.5倍
//2)把原来数组的内容复制到新数组中
        for(int i = 0 ; i < data.length; i++) { newdata[i] = data[i]; }
//3)让原来的数组名指向新的数组
        data = newdata;
//4)打印data数组中的元素
        for (int a : data) { System.out.print(a+"\t"); }
    }
}
执行结果:34    12    56    87    66    0    0    

向数组中插入元素

publicclass ArrayExpansion {
    publicstaticvoid main(String[] args) {
        int[] data = {45, 12, 78, 56, 90, 55};
        int[] d = insert(data,2,20);    //在下标2位置插入数值20for (int a : d) { System.out.print(a+"\t"); } //打印数组中的元素
    }
    //给数组data下标i 位置插入一个 key值    publicstaticint[] insert(int[] data, int i, int key) {
        int[] newdata = newint[data.length + 1];
        for (int j = 0; j < i; j++) { newdata[j] = data[j]; } //复制[0,i)部分
        newdata[i] = key; //插入新元素
        for (int j = i; j < data.length; j++) { newdata[j+1] = data[j]; } //复制[i+1,data.length)部分
        data = newdata;
        return data;
    }
}
输出结果:45 12 20 78 56 90 55 

 

posted @ 2022-03-30 15:13  鹿先森JIAN  阅读(39)  评论(0编辑  收藏  举报