1.Java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。
2.Java数组的初始化有以下两种方式:
静态初始化:由程序员显式指定每个数组元素的初始值,系统自动决定数组的长度。
String[] names = new String[]{"ZhangSan","LiSi","WangWu"}; //该数组的长度为3
动态初始化:程序员指定数组的长度,系统自动将数组元素设置为默认的初始值。
String[] names = new String[3]; //每个数组元素默认的初始值由系统设置为null
注意:不能同时使用静态初始化和动态初始化,否则,将出现编译错误。 String[] namesStrings = new String[3]{"ZhangSan","LiSi","WangWu"}; //error
3.数组可分为引用类型的数组和基本数据类型的数组基本数据类型包括:整型类型(byte, short, int, long ) 浮点类型(float, double) 字符类型(无符号char) 布尔类型(boolean),对于基本数据类型的数组而言,数组元素的值直接存储在对应的数组元素中。
int[] nums = new int[] {0,1,2,3,4}; //数组元素直接存储其对应的值
而对于引用类型的数组而言,每个数组元素都是一个引用类型,它指向堆中的某个对象。如上面定义的名为names的数组,它的没一个数组元素都是一个引用,指向某个String类型的对象。
4.Java中没有确切意义上的多维数组。多维数组可以看成是每个数组元素均是指向另一个数组对象的引用。定义多维数组时,只许指定第一维的长度即可,即初始化最左边的维数,此时该数组的每个元素相当于一个数组引用变量,且它们还需进一步初始化。如下所示:
int[][] a = new int[4][]; //每个数组元素为指向一个一维数组对象的数组引用变量
int[][][] b = new int[5][][];//每个数组元素为指向一个二维数组对象的数组引用变量
上面的代码中定义了一个二维数组,可以进行如下分解:数组变量a指向一个长度为4的数组对象,该数组对象中的每个数组元素都是一个引用类型的变量,等待初始化后指向某个一维数组对象。所以,有以下的代码:
int[][] a = new int[4][];
a[0]=new int[2];
a[3]=new int[5];