A[] a; B[] b=new B[5];
print(b)
print(b.length)
a={new A(),new A()}//聚合初始化;隐式使用new在堆中创建
A[] d=new A[];
a=d;//a,d都指向堆中同一个数组对象
output:
b:[null,null,null,null,null],
5
a,b其实只是一个引用,指向堆中新建的一个真实对象[用以保存指向其他对象的引用]
length只是表示数组能容纳多少元素,但不能真实确定数组存放的实际个数
注意点:
数组对象初始化:数字型默认初始化为0 char类型的为O,布尔类型的默认为:false
jdk1.5前因为其他容器没有泛型支持,所以对象数组有一个编译类型检查的优势;
数组是线性序列,所以访问快,但容量固定是硬伤,所以arraylist容器有一定策略动态扩容