Eri*_*ass 3 java android break comparison-operators
我在下面发布了两个例子.
在第一个例子中,我使用等于运算符,而while进程永远持续,而不是在它应该的时候断开.
在第二个例子中,我使用了大于或等于运算符,并且进程在应该的时候中断.
这怎么可能呢?
例1:
Integer myVar1 = 42985;
Integer myVar2 = 1;
while (true)
{
if (myVar2 == myVar1)
{
break;
}
++ myVar2;
}
Run Code Online (Sandbox Code Playgroud)
例2:
Integer myVar1 = 42985;
Integer myVar2 = 1;
while (true)
{
if (myVar2 >= myVar1)
{
break;
}
++ myVar2;
}
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢大家的好答案!我现在完全理解这个问题,这个新信息解释了我在我的应用程序中遇到的一些奇怪的行为.我希望我能选择一个以上的最佳答案.
这是自动拳击不太令人愉快的效果之一.
在第一个示例中,==运算符指示标识相等:如果它们是同一个实例,则两个对象将仅相等.
在第二个示例中,'> ='运算符表示数字比较:两个对象将自动取消装箱,然后进行比较.
让事情变得更加混乱,JVM缓存了一系列"小"整数(-128 <= X <= 127,iirc)Integer,因此==运算符有时会起作用.
底线:使用.equals()和.compareTo().
| 归档时间: |
|
| 查看次数: |
5201 次 |
| 最近记录: |