asList返回的是一个受指定数组支持的固定大小的列表。可以通过集合的方法对数组的元素进行操作。
如果数组中的元素是对象,那么转成集合时,直接将数组中的元素作为集合中的元素进行存储。如果数组中的元素是基本数据类型数值,那么会将该数组作为集合中的元素进行存储。如:
int[] arr = {1,2,3,4};
List<int[]> list = Arrays.asList(arr);
sop(list);//打印[[I@c17164]
将arr数组装入list,list的大小为1.
但如果:
Integer[] arr = {1,2,3,4};
List<int[]> list = Arrays.asList(arr);
sop(list);//打印[1,2,3,4]
此时装入的是对象,list大小为4.
我的问题是:为什么不将int[] 中的基本数据类型自动装箱,在将对象存入集合操作?
两个arr都是引用数据类型,如果说因为集合中存储的是引用数据类型所以才将int[] arr存入的话,那么Integr[] arr也是引用数据类型,为什么不将Integer[] arr的数组引用存入集合?而是将里面的对象存入集合?求大神解答。。。 |