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
,因为它包含对象(但不是基元).