Java Arrays.asList(…).contains(…)是如何工作的?

Java Arrays.asList(…).contains(…)是如何工作的?,java,arrays,list,arraylist,Java,Arrays,List,Arraylist,我有以下代码.. String[] weekEnds={"0","6"}; for(int i=0;i<7;i++){ if(Arrays.asList(weekEnds).contains(i)){ System.out.println("I am in the array"); } } String[]周末={“0”,“6”}; 对于(int i=0;i您正在比较字符串和int。您的数组包含字符串(“0”,“6

我有以下代码..

    String[] weekEnds={"0","6"};

    for(int i=0;i<7;i++){

    if(Arrays.asList(weekEnds).contains(i)){

     System.out.println("I am in the array");       
    }    
  }
String[]周末={“0”,“6”};

对于(int i=0;i您正在比较字符串和int。您的数组包含字符串(
“0”
“6”
),但您正在将int传递到比较中


该整数将是一个整数,但整数(1)
不等于
“1”

您正在比较苹果和桔子(在本例中是
字符串
s和
整数
s)

您正在将
字符串数组
转换为
列表
。然后使用
int
值对其调用
contains()
。由于该方法将
Object
作为参数类型,
int
自动装箱为
整数

要解决此问题,请编写:

if(Arrays.asList(weekEnds).contains("" + i)) {

您需要有一个int数组才能进行这样的比较

更改此项:

String[] weekEnds={"0","6"};


只需更改为
Integer[]weekEnds={0,6};
,我认为它会起作用。

或者将
if
条件更改为

if(Arrays.asList(weekEnds).contains(String.valueOf(i))){
或者将数组更改为

Integer[] weekEnds={0,6};
因为带有
“0”
的字符串与
0
的整数不同。事实上
(长)0L
(整数)0
(双精度)0.0
是不同的。
Integer[] weekEnds={0,6};