考虑以下代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
1
2
3
4
5
.
.
.
2147483643
2147483644
2147483645
2147483646
2147483647
16825610038948
Run Code Online (Sandbox Code Playgroud)
我无法startTime从Eclipse控制台获得价值,因为有大量的线路.
我们将上述For-Loop称为Infinite Loop因为i值始终大于零.从理论上讲,循环不应该终止.但是,因为我们使用int,其最大值是2147483647,For-Loop当我们递增时终止i,即i++何时终止i = 2147483647.
所以我假设,当我们增加i时i = 2147483647,值i将变为负数或零,因此条件变为false,并且For-Loop终止.
所以为了确认,我尝试了下面的代码:
int i = 2147483647; // Maximum value of int
System.out.println(i++);
Run Code Online (Sandbox Code Playgroud)
因此,如果我的假设是正确的,它应该打印任何负数或零值.但我得到以下输出:
2147483647
这是我的疑问/怀疑:
当我们增加i值时i = 2147483647,值i仍然是相同的,即2147483647.那么For-loop,在上面的场景中,如何在没有任何错误或异常的情况下终止?
Gok*_* KP 10
它应该++i在你的System.out.println();中.
的System.out.println(++ⅰ);
你的假设是正确的,当我们增加i,何时i = 2147483647,i成为-2147483648.
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |