int[] a1 =new int[]{1,2,3};
String[] a2 = new String[]{"a", "b", "c"};
System.out.println(Arrays.asList(a1));
System.out.println(Arrays.asList(a2));outPut:
[[I@de6ced]
[a, b, c]这里,a1 按照 JDK1.5 的方式运行,
我想问的是,参数列表中,asList(T... a)
是不是多个元素当成“1”个 Object哈?
因为我运行
int[] a3 = new int[]{2};
System.out.println(Arrays.asList(a3))
outPut 的格式和 a1 的输出格式是一样的。
类型后加三个点代表可变参数(数量可变)
T是泛型例子:public static void main(String[] args) {
System.out.println(add1(1, 2, 3, 4, 5)); //可以继续加参数
System.out.println(add1(new int[]{1, 2, 3, 4, 5})); //其实参数n就是个数组啦,是个语法糖,某个版本才加的新特性,可以用两种方式调用
System.out.println(add2(new int[]{1, 2, 3, 4, 5})); //这个方法就只能传数组了,是老语法
//System.out.println(add2(1, 2, 3, 4, 5)); //这个就不能用可变参数方式调用了
}
public static int add1(int... n) {
int result = 0;
for(int i : n)
result += i;
return result;
}
public static int add2(int[] n) {
int result = 0;
for(int i : n)
result += i;
return result;
}
接下来讲Arrays.toList
这个方法作用,将数组转换成List
但请注意,List中只能存储对象类型的元素,不能存基本类型
举个例,能存Integer,不能存int!!!
如果你这么调用List list = Arrays.toList(new int[]{1, 2, 3})
意思就是将元素为int型的数组转换成元素为int型的List
很显然,它没法转,因为int是基本类型,不是对象
虽然这么做这个方法不会报错,且也会返回一个List对象给你,但这个对象是无效的,是不能用的,是错误的
你可以测试list.add(1)或者list.get(0),是会报错滴
还有Integer类自身没有toString的实现,而String类型有
java.util.List<?> l = java.util.Arrays.asList(data);
System.out.println(l);
System.out.println(java.util.Arrays.toString((int[])l.get(0)));
我想的是 AutoBoxing,自动装箱···
重新验证了一下,toList方法返回的List是不能添加东西的,如果传入的是基本类型的数组,那么会将此数组存到到List中索引为0的位置上细节地方了解得还不够深啊,反省中