我有一个通过调用:resp.getResultCode()
返回Long对象数据类型的方法。我想比较它HttpStatus.GONE.value()
,它实际上只返回{{1}}的原始int值。 Long unbox本身是否可以与int原语进行正确比较?
410
答案 0 :(得分:9)
如果等于运算符的操作数都是数字类型,或者一个是数字类型而另一个是convertible (§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
}