我在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
是原始类型,并且仅包含值。有关
int
和Integer
之间差异的更多详细信息,请参见http://mindprod.com/jgloss/intvsinteger.html关于java - 在Java中使用Arraylist,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26305377/