【发布时间】:2015-09-18 05:04:00
【问题描述】:
Integer a = 127;
Integer b = 127;
System.out.println(a == b);
结果为真,但是:
Integer a = 128;
Integer b = 128;
System.out.println(a == b);
结果是假的。为什么?
【问题讨论】:
标签: java
Integer a = 127;
Integer b = 127;
System.out.println(a == b);
结果为真,但是:
Integer a = 128;
Integer b = 128;
System.out.println(a == b);
结果是假的。为什么?
【问题讨论】:
标签: java
您不应该在 Java 中以这种方式比较对象。当您像a == b 那样比较它们时,您比较的是引用而不是值。
你应该使用equals方法。
Integer a = 127;
Integer b = 127;
System.out.println(a.equals(b));
如果你问为什么 128 以下的整数会出现这种情况:Java 使用池来存储小值。因此,所有小于 128 的整数都不会创建新实例,而是使用“池化”,缓存一个。
这个问题实际上是在 SO 上提出的。阅读这些文章:
【讨论】: