首先,指出你的理解错误
//int[] num = {2,3,5};//基本数据类型
//List<int[]> li=Arrays.asList(num);
Integer[] num = {2,3,5};//对象
List li = Arrays.asList(num);
两者运行结果是一样的。
再者,没有基本数据对象转换成集合这种说法,因为集合只能存储引用类型的数据对象。
下面代码是给你的解释,太详细了(我自己都佩服自己了,哈哈,自恋下),不懂再问- /*
- * 首先建议你看一下帮助文档中Arrays.asList()的解释
- * 应该注意到,这是一个泛型方法而且其参数是可变参数,而可变参数的实现就是基于JDK1.4中的数组
- * 下面再看这集中情况
- */
-
- String[] arr = {"abc","cc","kkk"};
- /*
- * 当你为List加上泛型后,也就是告诉编译器asList()方法中的参数是一个
- * String类型的可变参数,也就是说asList()方法中的参数可以是一个String类型的字符串,也可以是N个
- * 现在你没有给它多个字符串,而是给它一个String类型的数组,编译器将按照JDk1.4的语法编译
- * 把数组拆成单个字符串,放入集合中
- */
- List<String>list = Arrays.asList(arr);
- sop(list);
- /*
- * 你给List指定的泛型是int[]的数组,相当于一个Object,也就是说asList方法中的参数
- * 可以是一个int[],也可以是N个int[],当你用一个int[]类型的对象作为参数时
- * 编译器会把它看成可变参数,按照JDk5.0的语法去编译,把num1当做一个Object存入集合
- * 也就是说List中只有一个int[]的引用,它其实是一个地址值
- * 所以打印的是数组的哈希值
- */
- int[] num1 = {2,3,5};
- List<int[]> list1=Arrays.asList(num1);
- sop(list1);
-
- //看了第一个的解释,这个也就不难理解了
- Integer[] num2 = {2,3,5};
- List list2 = Arrays.asList(num2);//这一行的泛型可以加,也可以不加,运行结果一样
- sop(list2);
复制代码 |