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可见  [I@1ebdff3b 

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本质就是一个数组,所以当对象类型数组直接可以传给它

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章