是否有任何情况(i!= i)将被评估为真?

时间:2013-04-30 18:10:06

标签: java

我刚刚开始围绕.equals() vs ==,Java的副本传递和传递引用等等。我想知道是否会有Java中可以无限运行的场景:

while (i != i) {
    // infinite loop
}

我对String对象,Array对象等有一些想法,但是无法完成任何工作。感谢。

1 个答案:

答案 0 :(得分:7)

while (Double.NaN != Double.NaN)

我认为这是Java Puzzlers一书中的“bride of looper”谜题。

请参阅JLS以获取参考:

  

根据IEEE 754标准的规则执行浮点相等测试:

     

如果任一操作数是NaN,则==的结果为false但是   !=的结果为真。实际上,当且仅当时,测试x!= x是真的   x的值是NaN。 (方法Float.isNaN和Double.isNaN也可以   用于测试值是否为NaN。)