Java 比较128下的2个整数

Java 比较128下的2个整数,java,Java,结果是正确的,但是: Integer a = 127; Integer b = 127; System.out.println(a == b); 结果是错误的。为什么?在Java中不应该以这种方式比较对象。当比较它们时,如a==b,比较的是引用,而不是值 您应该使用equals方法 Integer a = 128; Integer b = 128; System.out.println(a == b); 如果您问为什么128以下的整数会出现这种

结果是正确的,但是:

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

结果是错误的。为什么?

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

您应该使用
equals
方法

    Integer a = 128;
    Integer b = 128;
    System.out.println(a == b);
如果您问为什么128以下的整数会出现这种情况:Java使用池来处理小值。因此,128以下的所有整数不创建新实例,而是使用“池”缓存实例

这个问题其实是有人问过的。阅读以下文章:


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

      您应该使用
      equals
      方法

          Integer a = 128;
          Integer b = 128;
          System.out.println(a == b);
      
      如果您问为什么128以下的整数会出现这种情况:Java使用池来处理小值。因此,128以下的所有整数不创建新实例,而是使用“池”缓存实例

      这个问题其实是有人问过的。阅读以下文章:


      您说过Java使用池来处理较小的值,但为什么我不能比较2个较小的浮点值?(Float a=1f;Float b=1f)您说过Java使用池来处理较小的值,但为什么我不能比较两个较小的Float?(浮动a=1f;浮动b=1f)