我试了下 System.out.println(new Integer(1009098).toString()); 输出结果是1009098 而且转换泛型集合的话,也不是Integer保存进去了。
其实Arrays.asList()方法源码接收的参数类型为一个可变参数的泛型asList(T...a);,在有可变参数之前这里传送的就是一个数组,那么我可以理解为传送的就是一个泛型数组 所以个人理解为由于int是基本数据类型,所以在传送int[]时候会将此数组看做一个整体,传入而String是引用型数据,所以会拆箱一次。以下代码可以说明这些问题。
//int数组类型
int [] arr = new int[]{1,3,5,7,9};
List<int[]> list = Arrays.asList(arr);
System.out.println("int[]==="+list);
System.out.println("int[]==="+list.size());
//Intager数组
Integer[] arrs1 = new Integer[]{1,2,3,4,5,6};
List<Integer> lists1 = Arrays.asList(arrs1);
System.out.println("Integer[]==="+lists1);
System.out.println("Integer[]==="+lists1.size());
//String数组类型
String[] arrs = new String[]{"ASD","ASD","ASD","ASD"};
List<String> lists = Arrays.asList(arrs);
System.out.println("String[]==="+lists);
System.out.println("String[]==="+lists.size());
输出结果为
int[]===[[I@1f1fba0]
int[]===1
Integer[]===[1, 2, 3, 4, 5, 6]
Integer[]===6
String[]===[ASD, ASD, ASD, ASD]
String[]===4 |