考虑下面的代码:
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 控制台获得价值,因为有大量的行。
我们将上述For-Loop
称为Infinite Loop
因为i
值始终大于零。理论上,循环不应该终止。但是由于我们使用int
,它的最大值是2147483647
,所以For-Loop
当我们增加时终止i
,即i++
当i = 2147483647
。
所以我假设,当我们增加i
when 时i = 2147483647
, 的值i
将变为负数或零,因此条件变为false
,并且For-Loop
终止。
所以为了确认,我尝试了下面的代码:
int i = 2147483647; // Maximum value of int
System.out.println(i++);
所以如果我的假设是正确的,它应该打印任何负数或零值。但相反,我得到了以下输出:
2147483647
这是我的问题/疑问:
当我们增加i
value 时i = 2147483647
, 的值i
仍然相同,即2147483647
。那么For-loop
,在上述情况下,如何在没有任何错误或异常的情况下终止呢?