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
。
为什么会这样?这些片段之间有什么区别?
第一个代码片段:您正在比较对象引用,这意味着对象也指向特定的对象引用。在这种情况下,您正在比较一个整数,它是int的包装类。
第二个代码段:您正在将一个“int”与另一个“int”进行比较。
例子:
这样想:如果两个人的名字是John,在第一个场景中我们比较的是John,而在第二个场景中我们只比较John。我希望这有帮助!
>
在第一个示例中,您正在比较引用。在您的示例中,有两个具有不同引用和相同值的不同对象。
在第二个示例中,您使用自动拆箱在堆栈内存中创建新的整数,并使用符合您期望的整数比较。自动拆箱可以在null的情况下产生NullPointerExcture。
在一种情况下,您正在比较两个Integer
对象引用。在另一种情况下,您正在比较两个int
s。当使用=
操作符比较对象引用时,如果它们不是同一个对象,它将返回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总是这样。 理想情况下,将给定的