泛型数组列表与反射
2016-01-06 16:31
253 查看
如果声明一个没有指定空间长度的泛型数组,如ArrayList<Integer> in = new
ArrayList<>(),这时,系统会自动给in分配10个容量空间,即[null,null,null,null,null,null,null,null,null,null],如果这时为in赋值,如:
这时,in的内容实际上为[1,2,3,4,5,null,null,null,null,null],即有五个为null的值,但是用in.size()方法得到5,不包括后面的null,在实现反射的toString()方法时,可能会打印出后面的null值,如:
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){ ... }
相关文章推荐
- 自定义UIView动画效果
- 容斥原理
- Android初学习 - AsyncTask的一些介绍I
- 做过的最短路径集合
- android使用5.0的toolbar,自定义布局参考地址
- 【bzoj4320】【ShangHai2006 Homework】【并查集+离线处理】
- 【poj2823】Sliding Window
- python 實現楊輝三角
- 利用反射实现对sqlite3数据库的crud(增删改查)操作的一个baseAndroidDao封装,安卓开发中
- C++编写ActiveX ocx控件在网页中调用失败问题
- CXF3.0.2+Spring3.2.14 WebService入门实例三
- HDU2586 How far away ?(LCA模板题)
- cocoapods
- php jquery pjax示例源码 (ajax请求,并改变url)
- 超融合架构 — Hyper Converged Infrastructure 小记
- shell中读取配置文件之eval
- socket编程原理
- hive sql join优化
- Android屏幕适配全攻略(最权威的官方适配指导)
- Quartz Scheduler(2.2.1) - Usage of JobDataMap