两个整数值在java中相等?

时间:2014-01-13 09:45:03

标签: java map integer equals record

在我的下面的代码中,我检查两个infocode是否存在显示msg MSG_SAME_INFO_ALREADY_EXISTS,但问题是,当我比较两个infocode时,信息编码值相同,但它无法进入循环。

我在下面的代码中出错了什么?

if (folderInfoData.getFolderInforecord().getInfoCode() == map.get("infoCode")) {
    showError(pageResourceBundle.getText("MSG_SAME_INFO_ALREADY_EXISTS"));
    return;
    }

以下给出的Debug值均为:

下面给出的folderInfoData.getFolderInforecord().getInfoCode()map.get("infoCode")信息编码返回整数。

enter image description here enter image description here

有谁能告诉我如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:5)

您正在比较对象 - Integers==运算符可能仅适用于[-128,127]之间的数字。看看JLS

  

如果框中的值p为true,false,则为字节或字符   范围\ u0000到\ u007f,或介于-128和127之间的int或短数字   (包括),然后让r1和r2成为任意两个拳击的结果   转换p。始终是r1 == r2。

的情况

由于您所比较的值不在上述范围内,因此结果将评估为false。您应该使用Integer#equals代替。

答案 1 :(得分:2)

您正在将对象与问题==进行比较。使用equals()代替==

我们为什么要使用equals()

阅读this链接了解详情。和ᴍarounᴍaroun回答描述更多。