2

.equals()vs 、Java の pass-by-copy と pass-by-reference などに頭を悩ませ始めたところです==。そして、Java でこれが無限に実行されるシナリオがあるかどうか疑問に思っていました。

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

String オブジェクト、Array オブジェクトなどに関するいくつかのアイデアがありますが、何も機能しません。ありがとう。

4

1 に答える 1

7
while (Double.NaN != Double.NaN)

これが本の「ルーパーの花嫁」パズルだと思いますJava Puzzlers

参考までにJLSを参照してください。

浮動小数点の等価性テストは、IEEE 754 標準の規則に従って実行されます。

いずれかのオペランドが NaN の場合、== の結果は false ですが、!= の結果は true です。実際、テスト x!=x は、x の値が NaN の場合にのみ真になります。(メソッド Float.isNaN および Double.isNaN を使用して、値が NaN かどうかをテストすることもできます。)

于 2013-04-30T18:11:35.493 に答える