【问题标题】:Compare 2 Integer under 128 [duplicate]比较128以下的2个整数[重复]
【发布时间】: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


    【解决方案1】:

    您不应该在 Java 中以这种方式比较对象。当您像a == b 那样比较它们时,您比较的是引用而不是值。

    你应该使用equals方法。

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

    如果你问为什么 128 以下的整数会出现这种情况:Java 使用池来存储小值。因此,所有小于 128 的整数都不会创建新实例,而是使用“池化”,缓存一个。

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

    【讨论】:

    • 你说 Java 使用池来处理小值,但为什么我不能比较 2 个小浮点数? (浮点数 a = 1f;浮点数 b = 1f)
    猜你喜欢
    • 2014-12-14
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2011-12-17
    • 2013-02-27
    • 1970-01-01
    相关资源
    最近更新 更多