無限ループで実行されるJavaコードを書きました。
以下はコードです:
public class TestProgram {
public static void main(String[] args){
Integer i = new Integer(0);
Integer j = new Integer(0);
while(i<=j && j<=i && i!=j){
System.out.println(i);
}
}
}
上記のコードでは、whileループ内の条件を見ていると、最初はそのプログラムがwhileループ内に入らないように見えます。しかし、実際にはそれは無限ループであり、値を出力し続けます。
ここで何が起きてるの?
iまたはを変更しない場合j、ループが終了するのはいつになると思いますか?
i<=j、そしてj<=iあなたは結論付けることができますi == j、それは最後の用語と矛盾します。したがって、式全体がfalseと評価され、whileは入力されません。ここでのポイントは、オブジェクトのアイデンティティです。
i<=j && j<=i && i!=jこの条件は常にtrueと評価されることです。ちょうど紙を取り、あなたがそれをキャッチすることを評価してください:)