このループが終了する理由を解明しようとしています...
@Test
public void test() {
int counter=0;
int from = 0;
int until = Integer.MAX_VALUE;
while(counter <= until) {
counter++;
if(counter < from) {
System.out.println("continuing " + counter + " <= " + from);
continue;
}
}
System.out.println("finished " + counter);
}
while(counter <= until)
true
カウンタは Integer.MAX_VALUE を超えて増やすことはできないため、常に解決する必要があります。したがって、ループは終了してはなりません。
ただし、Eclipse で JUnit ランナーを実行すると、次のようになります。
finished 108772
デバッガーで実行すると、次のようになります。
finished 125156
の出力if(counter < from)
は決して出力されません。そのブロックを削除しても、今度は Integer.MAX_VALUE でコードが終了します。
finished 2147483647