码迷,mamicode.com
首页 > 编程语言 > 详细

泛型数组列表与反射

时间:2016-01-06 17:40:11      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

如果声明一个没有指定空间长度的泛型数组,如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){   
    ...
}

 

泛型数组列表与反射

标签:

原文地址:http://www.cnblogs.com/runwulingsheng/p/5106132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!