以下のコードを検討してください。
public class Test {
public static void main(String args[]) {
long startTime = System.nanoTime();
for(int i = 1; i > 0; i++) {
System.out.println(i);
}
System.out.println(System.nanoTime() - startTime);
}
}
出力:
1
2
3
4
5
.
.
.
2147483643
2147483644
2147483645
2147483646
2147483647
16825610038948
startTime
大量の行があるため、Eclipse コンソールから値を取得できません。
値は常に 0 より大きいため、上記For-Loop
をと呼びます。理論的には、ループは終了しないはずです。しかし、最大値が であるを使用しているため、インクリメントすると、つまりで終了します。Infinite Loop
i
int
2147483647
For-Loop
i
i++
i = 2147483647
したがって、 when をインクリメントすると、 の値が負またはゼロになるため、条件が になり、 が終了すると想定しi
てi = 2147483647
いi
ましfalse
たFor-Loop
。
確認のために、以下のコードを試しました。
int i = 2147483647; // Maximum value of int
System.out.println(i++);
したがって、私の仮定が正しければ、負の数またはゼロの値が出力されているはずです。しかし、代わりに次の出力が得られました。
2147483647
ここに私の質問/疑問があります:
i
値をインクリメントするi = 2147483647
と、 の値はi
同じまま2147483647
です。では、上記のシナリオで、はどのようにしてFor-loop
エラーや例外なしで終了したのでしょうか?