java中的ArrayList错误(无法等于两个数字)

java中的ArrayList错误(无法等于两个数字),java,if-statement,arraylist,Java,If Statement,Arraylist,这里有一些代码 package deleteit; import java.lang.*; import java.io.*; import java.util.*; public class Deleteit { public static void main(String[] args) throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

这里有一些代码

package deleteit;
import java.lang.*;
import java.io.*;
import java.util.*;

public class Deleteit {

public static void main(String[] args) throws IOException {

    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    ArrayList<Integer> arr1=new ArrayList<Integer>();
    arr1.add(100000);
    arr1.add(1);
    arr1.add(100000);
    arr1.remove(1);
    if(arr1.get(0)==arr1.get(1))
    {
        System.out.println("GUd");
    }
    else
       System.out.println("damnit");

}

}
包删除它;
导入java.lang.*;
导入java.io.*;
导入java.util.*;
公共类删除它{
公共静态void main(字符串[]args)引发IOException{
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
ArrayList arr1=新的ArrayList();
1.增加(100000);
1.加入第(1)款;
1.增加(100000);
arr1.移除(1);
如果(arr1.get(0)=arr1.get(1))
{
System.out.println(“GUd”);
}
其他的
System.out.println(“该死的”);
}
}
现在Gud应该被打印出来,因为100000等于100000,因为1从ArrayList中被删除,所以剩下100000和100000。 那么为什么会打印damnit?


这是一个BUG吗?

您必须使用
equals
而不是
=

以下是一些示例代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class DeleteIt {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<Integer> arr1 = new ArrayList<Integer>();
        arr1.add(100000);
        arr1.add(1);
        arr1.add(100000);
        arr1.remove(1);
        if (arr1.get(0).equals(arr1.get(1))) {
            System.out.println("GUd");
        } else
            System.out.println("damnit");
    }
}

后一个代码似乎强制取消装箱,然后
==
不是比较引用,而是比较实际值。

您必须使用
等于
而不是
=

以下是一些示例代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class DeleteIt {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<Integer> arr1 = new ArrayList<Integer>();
        arr1.add(100000);
        arr1.add(1);
        arr1.add(100000);
        arr1.remove(1);
        if (arr1.get(0).equals(arr1.get(1))) {
            System.out.println("GUd");
        } else
            System.out.println("damnit");
    }
}

后一个代码似乎强制取消装箱,然后
==
不是比较引用,而是比较实际值。

使用
if(arr1.get(0).equals(arr1.get(1))
,因为
==
而不是
.equals()
。也不是说
arr1.remove(1)
很棘手-它会删除索引
1
中的项目还是
等于(1)
的项目?为什么会这样?有什么原因吗?我总是使用arr1.get(0)==arr1.get(1)它删除索引1U中的项目,我们可以使用Netbeans调试它,等等,因为
if(arr1.get(0).equals(arr1.get(1))
,因为
==
而不是
.equals()
。也不是说
arr1.remove(1)
很棘手-它会删除索引
1
中的项目还是
等于(1)
的项目?为什么会这样?有什么原因吗?我总是使用arr1.get(0)==arr1.get(1)它会删除索引1U处的项目,可以使用Netbeans进行调试,ETCPL解释为什么
取消装箱
不在这里工作???@shubhandupamanik请检查我的更新答案。我不能100%确定为什么取消装箱在这里不起作用,但是通过在比较的第一个值上使用
intValue()
,您可以“触发”它。请解释为什么
unboxing
在这里不起作用???@shubhandupamanik请检查我的更新答案。我不能100%确定为什么取消装箱在这里不起作用,但是通过对比较的第一个值使用
intValue()
,您可以“触发”它。