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(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |