两个多头之间的比较并不像预期的那样有效

时间:2015-05-28 08:06:18

标签: java numbers

这将是一个简单的问题(或者至少我认为)。我必须将Long对象与长基元进行比较。

我的代码简化了:

long primitiveLong = 285825645621;
Long objectLong = new Long(285825645621);

if(primitiveLong == objectLong.longValue()){
    System.out.print("They are equals");
}

我预计它会起作用,但事实并非如此,有人可以解释我为什么吗?

提前致谢。

修改

好吧,我使用显式数字时出错,我会在这里写下我的代码:

long identifier = mMarkers.get(marker);
long currentId = item.getId().longValue();

if (currentId==identifier)
    System.out.print("They are equals");

在调试中

enter image description here

编辑2

这是调试模式下的IDE(Android Studio)错误,我尝试了另一个IDE,它在相同的代码下运行良好。所以感谢大家的答案,但问题是另一个,我无法期待。

2 个答案:

答案 0 :(得分:0)

首先,这必须给你编译错误,因为编译器认为285825645621是一个整数但是它大于int,所以你需要改变你的代码:

long primitiveLong = 285825645621l; //add and l at the end of your number so compiler know that it is a long not an int
Long objectLong = new Long(285825645621l); //do the same thing here

if(primitiveLong == objectLong.longValue()){
    System.out.print("They are equals");
}

这将打印:They are equals

答案 1 :(得分:0)

您可以使用仍然是此限制的文字值285825645

If you are using beyond the limit you will get compile error 

long primitiveLong = c;
            Long objectLong = new Long(285825645);

            if(primitiveLong == objectLong.longValue()){
                System.out.print("They are equals");
            }