无论使用那种类型的数组,数组标识符其实只是一个引用,指向在堆中创建的一个真实对象,这个(数组)对象用于保存指向其他对象的引用。可以作为数组初始化语法的一部分隐式地创建此对象,或者用new表达式现实地创建。只读成员length是数组的一部分(事实上这是唯一一个可以访问字段或方法),表示字数组对象可以存储多少元素。"[]"语法是访问数组对象的唯一方式。
下列总结了初始化数组的各种方式:
import java.util.Arrays;
/**
* Array
* @author Administrator
*
*/
public class ArrayOptions {
public static void main(String[] args) {
BerylliumSphere[] a;
//数组里的引用自动初始化为‘null’
BerylliumSphere[] b = new BerylliumSphere[5];
System.out.println(Arrays.toString(b));
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.length"+a.length);
System.out.println("b.length"+b.length);
System.out.println("c.length"+c.length);
System.out.println("d.length"+d.length);
a=b;
System.out.println("a.length"+a.length);
//数组的基本类型
int[] e; //空引用
int[] f = new int[5];
//数组内的基本类型自动初始化为0
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};
// 编译错误:变量 e 没有初始化
//System.out.println("e.length"+e.length);
System.out.println("f.length"+f.length);
System.out.println("g.length"+g.length);
System.out.println("h.length"+g.length);
e=h;
System.out.println("e.length"+e.length);
e = new int[]{1,2};
System.out.println("e.length"+e.length);
}/**output:
* [null, null, null, null, null]
a.length2
b.length5
c.length4
d.length3
a.length5
f:[0, 0, 0, 0, 0]
f.length5
g.length4
h.length4
e.length3
e.length2
*/
}