天天看点

Arrays.asList contains int无效

int[] ints = {1,2,3,4};
		
		if(Arrays.asList(ints).contains(3)){
			System.out.println("true");
		}else{
			System.out.println("false");
		}
           

输出false

从我理解角度讲讲这种现象

public static <T> List<T> asList(T... a) {
      return new ArrayList<>(a);
}
           

1、基本数据类型是无法泛型化的,也就是说 8 个基本类型是无法作为 asList 的参数的,为啥没报错呢,因为数组是对象。当成对象了。输出ints可见  [[email protected] 

int[] ints = {1,2,3,4};
		
if(Arrays.asList(ints).contains(ints)){
	System.out.println("true");
}else{
	System.out.println("false");
}
           

输出true

2、修改int[] 成 Integer[] ,再次contains(3),true。

asList 方法。Java将可变长参数当成数组对待。可以将一个数组或可变的参数个数传递给可变长参数。当用可变的参数个数调用方法时,Java会创建一个数组并把参数传给它。

a本质就是一个数组,所以当对象类型数组直接可以传给它