您的位置:首页 > 其它

泛型数组列表与反射

2016-01-06 16:31 253 查看
如果声明一个没有指定空间长度的泛型数组,如ArrayList<Integer> in = new
ArrayList<>(),这时,系统会自动给in分配10个容量空间,即[null,null,null,null,null,null,null,null,null,null],如果这时为in赋值,如:

for(int i=1;i<=5;i++){
  in.add(i);
}


这时,in的内容实际上为[1,2,3,4,5,null,null,null,null,null],即有五个为null的值,但是用in.size()方法得到5,不包括后面的null,在实现反射的toString()方法时,可能会打印出后面的null值,如:

java.util.ArrayList[elementData=class java.lang.Object[]{java.lang.Integer[value=1][][],java.lang.Integer[value=4][][],
java.lang.Integer[value=9][][],java.lang.Integer[value=16][][],java.lang.Integer[value=25][][],null,null,null,null,null},
size=5][modCount=5][][]


即便一开始指定ArrayList的大小,如ArrayList<Integer> in = new ArrayList<>(4),当动态增加数组元素到一定量值时,ArrayList本身的大小会曾动态增长,增长值为4->7->11->17...,并不是逐个增加容量大小,而是遵循((旧容量 * 3) / 2) + 1的规则.

另外,数组在java中是一个对象,这意味着它可以这样被引用:


priavate int[] a = new int[10];
public static Object XXX(Object a){
...
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: