黑马程序员技术交流社区
标题:
Arrays的asList方法的疑问
[打印本页]
作者:
Cola
时间:
2014-1-1 22:48
标题:
Arrays的asList方法的疑问
本帖最后由 Cola 于 2014-1-3 18:31 编辑
下边代码输出不同,请问是什么原因呢?
Integer[] nums={2,4,7};
List<Integer> li=Arrays.asList(nums);
sop(li);
//sop(li.size());
int[] num1={2,4,7};
List list=Arrays.asList(num1);
sop(list);
复制代码
运行结果如图。
结果.JPG
(3.83 KB, 下载次数: 16)
下载附件
2014-1-1 22:47 上传
运行结果
作者:
hurryup
时间:
2014-1-1 22:56
下面用泛型指定和上面的就一样了啊
作者:
qq884024720
时间:
2014-1-1 23:05
类型不同意,需要转换
作者:
taoge
时间:
2014-1-1 23:50
不同意前两楼说法,JAVA集合只能存放引用类型的的数据,不能存放基本数据类型
import java.util.Arrays;
import java.util.List;
public class ListTest
{
public static void main(String[] args)
{
Integer[] nums={2,4,7};
List<Integer> li=Arrays.asList(nums);
sop(li);
//sop(li.size());
int[] num1={2,4,7};
//JAVA集合只能存放引用类型的的数据,不能存放基本数据类型,所以这里实际上是把num1这个数组当作一个对象存进了List里,所以list里只有一个对象。
List list=Arrays.asList(num1);
sop(list);
sop(list.size()); //从这里打印长度为1就可以说明上面的问题
}
public static void sop(Object o)
{
System.out.println(o);
}
}
复制代码
作者:
李兴
时间:
2014-1-2 16:14
因为Integer[]数组内的元素是引用数据类型,Integer的父类为Object类型,所以JVM认为认为Integer[]的父类为Object类型的数组,使用aList方法可以拆开数组,并把数组中元素存入集合。
而int为基本数据类型,int[]的类型为"[I"代表int类型的数组,他的父类为Object,他不被JVN认为是Object类型的数组,所以无法拆开,只是将整个int数组作为一个元素存入集合,类型为"[I"
如果你要是定义一个int[][]二维数组,JVM将int[]认为是"[I"类型,int[][]认为是"[[I"类型的,"[[I"的父类就可以认为是Object类型的数组,不知这样你可以理解吗?
作者:
李兴
时间:
2014-1-5 16:27
求加分,不然就沉了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2