我在Java中使用Arraylists时遇到问题,我的代码如下所示:

List<Integer> numbers1 =  new ArrayList<>();
List<Integer> numbers2 =  new ArrayList<>();
boolean bcompare;


我将相同的数字添加到列表中,但是当我尝试像这样比较列表的索引0的数字时,布尔值的结果为false时应为true:

bcompare = numbers1.get(0)==numbers2.get(0);


bcompare是错误的

但是,当我使用一些临时变量然后进行比较时,这就是我所期望的,bcompare的真实值:

int a=numbers1.get(0);
int b=numbers2.get(0);
bcompare = a==b;


bcompare是真的

我在这里做错了什么?

最佳答案

这是因为您使用包装器类Integer。因此,==比较“引用”。
使用equals()方法代替比较对象的值:

bcompare = numbers1.get(0).equals(numbers2.get(0));


第二个比较是正确的,因为int是原始类型,并且仅包含值。

有关intInteger之间差异的更多详细信息,请参见http://mindprod.com/jgloss/intvsinteger.html

关于java - 在Java中使用Arraylist,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26305377/

10-11 01:38