比较128下的2整数

时间:2015-09-18 05:04:01

标签: java

    Integer a = 127;
    Integer b = 127;
    System.out.println(a == b);

结果是真的,但是:

    Integer a = 128;
    Integer b = 128;
    System.out.println(a == b);

结果是错误的。为什么呢?

1 个答案:

答案 0 :(得分:5)

你不应该用这种方式在Java中比较对象。当您将它们与a == b进行比较时,您需要比较引用而不是值。

您应该使用equals方法。

Integer a = 127;
Integer b = 127;

System.out.println(a.equals(b));

如果你问为什么这种情况发生在128以下的整数:Java使用池来获取小值。因此,128以下的所有整数都不会创建新实例,而是使用" pooled",缓存一个。

这个问题实际上是在SO上提出来的。阅读这些文章: