为什么这个循环不是无限的

时间:2018-08-18 14:31:21

标签: java

有人可以指引我走正确的路吗

为什么在以下代码中,开始和结束msg之间会有一秒钟的间隔?

System.out.println("Start:" + LocalTime.now());
for (int i = 0; i > -1; i++) { /*Infinite loop*/ }
System.out.println("End  :" + LocalTime.now());

我试图找出DCE是否需要花费时间来处理这种类型的代码,但找不到太多。

1 个答案:

答案 0 :(得分:6)

由于您已将int定义为从-2,147,483,648到2,147,483,647的int。一旦它达到-2147483648(您的代码循环从0开始并以1为增量),该条件将变为false并且循环将中断。

    int i;
    System.out.println("Start: " + LocalTime.now());
    for (i = 0; i > -1; i++) { /*Infinite loop*/ }
    System.out.println("End  :" + LocalTime.now());
    System.out.println("i  :" + i);

尝试上面的方法,您将看到最后的值为-2147483648,因此它退出循环。