无论使用那种数组,数组标识符只是一个引用,指向在堆中开辟的一个真实对象(存储空间)。并且Length是该对象的一个成员(属性)。所以说length是数组的大小,而不是实际保存的元素个数。<br /> ** 数组初始化的方式:**<br /> ** 1.引用类型:**
public class ArrayOptions {
public static void main(String[] args) {
BerylliumSphere[] a;//数组b还未被初始化
BerylliumSphere [] b=new BerylliumSphere[5];
BerylliumSphere[] c=new BerylliumSphere[4];
for (int i = 0; i <c.length ; i++) {
if (c[i]==null)
c[i]=new BerylliumSphere();
}
BerylliumSphere[] d={new BerylliumSphere(),new BerylliumSphere(),new BerylliumSphere()};//采用的是聚焦初始化
a=new BerylliumSphere[]{new BerylliumSphere(),new BerylliumSphere()};
System.out.println("a的长度"+a.length);
System.out.println("b的长度"+b.length);
System.out.println("c的长度"+c.length);
System.out.println("d的长度"+d.length);
a=d;//把数组d赋给数组a
System.out.println("a=d后的数组a的长度"+a.length);
}
2.基本类型:以int为列
public class ArrayOptions {
public static void main(String[] args) {
int[] e;//未初始化
int[]f =new int[5];
System.out.println("数组f"+ Arrays.toString(f));
int[] g=new int[4];
for (int i = 0; i <g.length ; i++) {
g[i]=i*i;
}
int [] h={11,47,93};
System.out.println("f的长度"+f.length);
System.out.println("g的长度"+g.length);
System.out.println("h的长度"+g.length);
e=h;
System.out.println("e=h后e的长度"+e.length);
e=new int[]{1,2};
System.out.println("new int[]后e的长度"+e.length);
}
}
通过上面的例子我们可以看出,length用来表示数组的大小,而不是数组的元素个数。同时,当生成一个新数组时候,引用类型被自动初始化为null,基本类型的数组如果是数值类型的,就被自己动初始化为0,char类型自动初始化为O,布尔类型学自己初始化为false。