用==比较Integer和int
List<Integer> test = List.of(955, 955);
if (test.get(1) == test.get(0))
...
以上条件导致 false
List<Integer> test = List.of(955, 955);
int a = test.get(1);
int b = test.get(0);
if (a == b)
...
上述条件返回true。
为什么会这样?片段之间有什么区别?
回答
在一种情况下,您正在比较两个Integer对象引用。在另一种情况下,您正在比较两个ints。当使用==运算符比较对象引用时,False如果它们不是同一个对象,即使它们包装了相同的值,它也会返回。