gpt4 book ai didi

java - 为什么 Java 看不到整数相等?

转载 作者:IT老高 更新时间:2023-10-28 20:30:39 25 4
gpt4 key购买 nike

我有应该相等的整数(我通过输出验证它)。但在我的 if 条件下,Java 看不到这些变量具有相同的值。

我有以下代码:

if (pay[0]==point[0] && pay[1]==point[1]) {
game.log.fine(">>>>>> the same");
} else {
game.log.fine(">>>>>> different");
}
game.log.fine("Compare:" + pay[0] + "," + pay[1] + " -> " + point[0] + "," + point[1]);

它会产生以下输出:

FINE: >>>>>> different
FINE: Compare:: 60,145 -> 60,145

可能我必须补充一点,point 是这样定义的:

Integer[] point = new Integer[2];

pay 我们取自循环构造函数:

for (Integer[] pay : payoffs2exchanges.keySet())

所以,这两个变量都是整数类型。

最佳答案

查看这篇文章:Boxed values and equality

比较包装器类型时,例如 Integer年代,Long s 或 Boolean使用 ==!= ,您是在将它们作为引用进行比较,而不是作为值。

如果两个变量指向不同的对象,它们不会==彼此,即使对象代表相同的值

Example: Comparing different Integer objects using == and !=.

Integer i = new Integer(10);
Integer j = new Integer(10);
System.out.println(i == j); // false
System.out.println(i != j); // true

解决方案是使用 .equals() 比较值…

Example: Compare objects using .equals(…)

Integer i = new Integer(10);
Integer j = new Integer(10);
System.out.println(i.equals(j)); // true

…或者明确地拆箱操作数。

Example: Force unboxing by casting:

Integer i = new Integer(10);
Integer j = new Integer(10);
System.out.println((int) i == (int) j); // true

引用/延伸阅读

关于java - 为什么 Java 看不到整数相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4428774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com