黑马程序员技术交流社区

标题: 数组工具类Arrays的asList方法的问题。 [打印本页]

作者: 许智敏    时间: 2013-5-16 08:43
标题: 数组工具类Arrays的asList方法的问题。
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的数组引用存入集合?而是将里面的对象存入集合?求大神解答。。。
作者: 乎¤_¤乎    时间: 2013-5-16 09:12
,asList会先去校对jdk1.4中asList的说明及asList(Object[] obj)
说明参数是一个数组,而int是基本类型,不是Object的子类,所以无法使用这项,故有寻找jdk1.5后版本对asList函数的说明 即public static <T> List<T> asList(T... a)而这时候参数为一个对象,如果把int数组的对象传入,集合中就存放了一个数组,打印出来的就是该数组的地址

作者: 许智敏    时间: 2013-5-16 09:48
乎¤_¤乎 发表于 2013-5-16 09:12
,asList会先去校对jdk1.4中asList的说明及asList(Object[] obj)
说明参数是一个数组,而int是基本类型,不 ...

为什么不在底层将int[]中的元素封装成对象呢?这样操作不是更方便么?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2