当前位置: 首页 > 知识库问答 >
问题:

比较包装器整数对象[重复]

巢宏富
2023-03-14

我正在用下面的代码比较两个整数对象....为什么输出是“Both Integer are not equal...”虽然我在某处读到过,Integer或int将只在-128到127的范围内相等。为什么不是128?

Integer i1 = 128;
Integer i2 = 128;

    if(i1!=i2){
    System.out.println("Both integer are not equal...");

  }

共有1个答案

公良高刚
2023-03-14

Javainteger是引用类型,==通常不会进行适当的比较。

但是,对于小数字,Java实现了一种与自动装箱连接的缓存机制,它使==运算符能够对-128到127范围内的数字正常工作。

即,如果你这样做

Integer x = 12;
Integer y = 12;
boolean b = x==y;
Integer x = 200;
Integer y = 200;
boolean b = x==y;
 类似资料:
  • 我有以下代码: 结果如下: 但是将的类型更改为将产生不同的输出,例如: 新的输出: 怎么会这样?为什么第一个示例代码没有输出?

  • 上述情况导致 上述条件返回。 为什么会这样?这些片段之间有什么区别?

  • 如果两个集合包含相同的对象,如何进行比较? 当然会打印出假的。

  • 我发现了一个有趣的事实,但我不知道是怎么发生的。

  • 如果两个集合包含相同的对象,如何进行比较? 当然会打印错误。

  • 问题内容: 我正在阅读Kathy Sierra和Bert Bates编写的SCJP Java 6,这本书让我非常困惑。在第245页上,他们声明以下代码。 然后在下一页上,它们具有以下代码 我很困惑!当我自己尝试该方法时,似乎无法使用==来比较使用equals()方法的方式。即使Integer变量设置为相同的值(即10),使用==总是给我’false’。我对么?使用==比较相同的Integer对象(