加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 比较2个整数,奇怪的行为

发布时间:2020-12-15 04:24:19 所属栏目:Java 来源:网络整理
导读:参见英文答案 Why is 128==128 false but 127==127 is true when comparing Integer wrappers in Java?????????????????????????????????????6个 我写了简单的代码: public static void main(String[] args) { Integer i1 = 127; Integer i2 = 127; boolean
参见英文答案 > Why is 128==128 false but 127==127 is true when comparing Integer wrappers in Java?????????????????????????????????????6个
我写了简单的代码:

public static void main(String[] args) {
    Integer i1 = 127;
    Integer i2 = 127;
    boolean flag1 = i1 == i2;
    System.out.println(flag1);

    Integer i3 = 128;
    Integer i4 = 128;
    boolean flag2 = i3 == i4;
    System.out.println(flag2);
}

但是,奇怪的是,结果如下:

true
false

你能解释一下为什么会出现这种差异吗?

解决方法

Integers是对象,==运算符可能“工作”(在你期望它的意义上 – 比较值)仅适用于[-128,127]之间的数字.看看 JLS – 5.1.7. Boxing Conversion

If the value p being boxed is true,false,a byte,or a char in the
range u0000 to u007f,or an int or short number between -128 and 127
(inclusive),then let r1 and r2 be the results of any two boxing
conversions of p. It is always the case that r1 == r2.

您要比较的值不在范围内,结果将评估为false.您应该使用Integer#equals,或者只使用lovely primitive int.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读