与==的整数比较

时间:2014-07-18 17:10:03

标签: java integer

我正在编写一些测试代码并发现了一个奇怪的事情,并且仍然混淆了这是怎么回事?

Integer i1 = 220;
Integer i2 = 220;

System.out.println(i1 == i2);

按预期打印 false 。但

Integer i1 = 20;
Integer i2 = 20;

System.out.println(i1 == i2);

打印 true ,但两者都是引用不同对象的不同引用(我假设)。

为什么第二个代码段会打印 true

1 个答案:

答案 0 :(得分:2)

==运算符仅适用于介于-128和127之间的Integer值。这就是为什么它不适用于220而是适用于20.一般情况下,最好始终使用{{} 1}}在比较.equals()时,您永远不应该依赖Integers运算符。

可在此处找到更多信息:https://www.owasp.org/index.php/Java_gotchas#Immutable_Objects_.2F_Wrapper_Class_Caching