繁体   English   中英

使用==比较Long对象类型和原始int

[英]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节)。

如果提升的操作数类型是intlong ,则执行整数相等性测试。

所以, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM