用 == 比较 Integer 和 int

San*_*gra 4 java autoboxing unboxing integer wrapper

List<Integer> test = List.of(955, 955);
if (test.get(1) == test.get(0))
...
Run Code Online (Sandbox Code Playgroud)

以上条件导致 false

List<Integer> test = List.of(955, 955);
int a = test.get(1);
int b = test.get(0);
if (a == b)
...
Run Code Online (Sandbox Code Playgroud)

上述条件返回true

为什么会这样?片段之间有什么区别?

Bil*_*ard 9

在一种情况下,您正在比较两个Integer对象引用。在另一种情况下,您正在比较两个ints。当使用==运算符比较对象引用时,False如果它们不是同一个对象,即使它们包装了相同的值,它也会返回。