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

使用==[重复]比较整数和整数

周阳波
2023-03-14
List<Integer> test = List.of(955, 955);
if (test.get(1) == test.get(0))
...

上述情况导致false

List<Integer> test = List.of(955, 955);
int a = test.get(1);
int b = test.get(0);
if (a == b)
...

上述条件返回true

为什么会这样?这些片段之间有什么区别?

共有3个答案

丰智
2023-03-14

第一个代码片段:您正在比较对象引用,这意味着对象也指向特定的对象引用。在这种情况下,您正在比较一个整数,它是int的包装类。

第二个代码段:您正在将一个“int”与另一个“int”进行比较。

例子:

这样想:如果两个人的名字是John,在第一个场景中我们比较的是John,而在第二个场景中我们只比较John。我希望这有帮助!

詹唯
2023-03-14

>

  • 在第一个示例中,您正在比较引用。在您的示例中,有两个具有不同引用和相同值的不同对象

    在第二个示例中,您使用自动拆箱在堆栈内存中创建新的整数,并使用符合您期望的整数比较。自动拆箱可以在null的情况下产生NullPointerExcture。

  • 郎祯
    2023-03-14

    在一种情况下,您正在比较两个Integer对象引用。在另一种情况下,您正在比较两个ints。当使用=操作符比较对象引用时,如果它们不是同一个对象,它将返回False,即使它们包装了相同的值。

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

    • 我有以下代码: 结果如下: 但是将的类型更改为将产生不同的输出,例如: 新的输出: 怎么会这样?为什么第一个示例代码没有输出?

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

    • 问题内容: 我是Java的新手,我刚刚读了一个整数类的变量,可以用API的三种不同方式来描述。我有以下代码: 这是在循环内,只是输出。 我的目标是弄清楚如何查看整数值。 我知道这是正确的方法吗?还是它? 我知道这是不正确的。这是正确的吗?是否存在值比较运算符? 问题答案: 整数是自动拆箱的,因此您可以执行

    • 我是泛型新手,想解决一个小问题。 我想给两个类型为“V扩展可比”的对象给类ComparePredicate,然后检查方法“isOk”,如果树类的int值“值”在这两个对象之间。我选择了comareTo方法,因为整数和V应该是可比较的类型,但是编译器给出了一个错误。我认为这只是一个句法问题。 那么,我需要如何正确地书写它呢。希望你们能帮我。谢谢你的回答。 类比较谓词 类树

    • 问题内容: 在Java中整数比较是棘手的,因为和表现不同。我明白了。 但是,如本示例程序所示, (第4行)的 行为不同于 (第3行) 。为什么是这样?? 结果 问题答案: 从JLS 如果装箱的值p为true,false,字节或\ u0000到\ u007f范围内的char或-128到127(含)之间的整数或短数,则令r1和r2为p的任何两次拳击转换。r1 == r2总是这样。 理想情况下,将给定的