Integer a = 127;
Integer b = 127;
System.out.println(a == b);
结果是真的,但是:
Integer a = 128;
Integer b = 128;
System.out.println(a == b);
结果是错误的。为什么呢?
答案 0 :(得分:5)
你不应该用这种方式在Java中比较对象。当您将它们与a == b
进行比较时,您需要比较引用而不是值。
您应该使用equals
方法。
Integer a = 127;
Integer b = 127;
System.out.println(a.equals(b));
如果你问为什么这种情况发生在128以下的整数:Java使用池来获取小值。因此,128以下的所有整数都不会创建新实例,而是使用" pooled",缓存一个。
这个问题实际上是在SO上提出来的。阅读这些文章: