Chr*_*ith 9 java arrays collections primitive primitive-types
为什么我使用这段代码,
int[] array = new int[3];
array[0] = 0;
array[1] = 1;
array[2] = 2;
System.out.println(Arrays.asList(array).contains(1));
Run Code Online (Sandbox Code Playgroud)
它输出错误.但是当我使用这段代码时,
Integer[] array = new Integer[3];
array[0] = 0;
array[1] = 1;
array[2] = 2;
System.out.println(Arrays.asList(array).contains(1));
Run Code Online (Sandbox Code Playgroud)
它输出真的吗?
Arrays.asList(int[])将返回a List<int[]>,这就是输出的原因false.
此行为的原因隐藏在Arrays.asList()方法的签名中.它的
public static <T> List<T> asList(T... a)
Run Code Online (Sandbox Code Playgroud)
内部的varargs是一个对象数组(ot类型T).但是,int[]与此定义不匹配,这就是为什么它int[]被视为一个单一对象.
同时,Integer[] 可以认为是类型对象的数组T,因为它包含对象(但不是基元).