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

java – 在while循环中比较两个相等的整数时,等于运算符失败了吗

发布时间:2020-12-15 02:02:12 所属栏目:Java 来源:网络整理
导读:我在下面发布了两个例子. 在第一个例子中,我使用了等于运算符,而while进程永远持续,而不是在应该的时候断开. 在第二个例子中,我使用了大于或等于运算符,并且进程在应该的时候中断. 这怎么可能呢? 例1: Integer myVar1 = 42985; Integer myVar2 = 1; while
我在下面发布了两个例子.
在第一个例子中,我使用了等于运算符,而while进程永远持续,而不是在应该的时候断开.
在第二个例子中,我使用了大于或等于运算符,并且进程在应该的时候中断.
这怎么可能呢?

例1:

Integer myVar1 = 42985;
  Integer myVar2 = 1;
  while (true)
  {
     if (myVar2 == myVar1)
     {
     break;
     }

  ++ myVar2;
  }

例2:

Integer myVar1 = 42985;
  Integer myVar2 = 1;
  while (true)
  {
     if (myVar2 >= myVar1)
     {
     break;
     }

  ++ myVar2;
  }

编辑:
谢谢大家的好消息!
我现在完全理解这个问题,这个新信息解释了我在我的应用程序中遇到的一些奇怪的行为.
我希望我能选择一个以上的最佳答案.

解决方法

这是自动拳击不太令人愉快的效果之一.

在第一个示例中,==运算符表示标识相等:如果两个对象是同一个实例,则它们将相等.

在第二个示例中,’> =’运算符表示数字比较:两个对象将自动取消装箱,然后进行比较.

让事情变得更加混乱,有一系列“小”整数(-128 <= X <= 127,iirc)JVM缓存整数值,因此==运算符有时会起作用. 底线:使用.equals()和.compareTo().

(编辑:李大同)

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

    推荐文章
      热点阅读