我试图弄清楚为什么这个循环会终止......
@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 runner 运行,我会得到:
finished 108772
如果我在调试器中运行,我会得到:
finished 125156
中的输出if(counter < from)
永远不会输出。如果我删除该块,代码仍然会终止,这次是 Integer.MAX_VALUE。
finished 2147483647