这将是一个简单的问题(或者至少我认为)。我必须将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");
在调试中
编辑2
这是调试模式下的IDE(Android Studio)错误,我尝试了另一个IDE,它在相同的代码下运行良好。所以感谢大家的答案,但问题是另一个,我无法期待。
答案 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");
}