[英]Comparing Long object type with primitive int using ==
我有一个方法,通过调用: resp.getResultCode()
返回一个Long对象数据类型。 我想比较它HttpStatus.GONE.value()
实际上只返回原始int值410
。 Long unbox本身是否可以与int原语进行正确比较?
if(resp.getResultCode() == HttpStatus.GONE.value()){
// code inside..
}
这是JLS的解释
如果等于运算符的操作数都是数字类型,或者一个是数字类型而另一个是可转换的(第5.1.8节)是数字类型,则对操作数执行二进制数字提升(第5.6.2节)。
和
如果提升的操作数类型是
int
或long
,则执行整数相等性测试。
所以, Long
是拆箱到long
。 并且数字推广应用于int
以使其变long
。 然后他们进行比较。
考虑一下long
将被“降级”为int
,你会遇到这样的情况
public static void main(String[] args) throws Exception {
long lvalue = 1234567891011L;
int ivalue = 1912277059;
System.out.println(lvalue == ivalue); // false
System.out.println((int) lvalue == ivalue); // true, but shouldn't
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.