java - java中for循环的特殊行为

标签 java for-loop

今天在阅读装箱和自动装箱时,我想出了一个场景,发现我陷入无限循环的特殊行为。

我检查了我的代码两次,但没有发现任何错误。 如果有人可以查看并建议我哪里做错了,这样我就会出现这个无限循环

请找到以下代码。

public class InTheLoop {

public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100;

public static void main(String[] args) {
    int count = 0;
     //Infinite loop starts.
    for (int i = START; i <= END; i++) {
        count++;
        System.out.println(count);
    }

 // This never got printed.
    System.out.println("hi I am out of for loop" +count);
  }
}

最佳答案

请注意您的 END等于 Integer 的最大可能值可以持有(值为 2147483647 )。这意味着对于 i 的任何值可能持有,i <= END总是正确的。当i实际达到2147483647 , 它仍然是 <= END .在下一次迭代中,您尝试将其递增 1,这会导致溢出,并且 i变成 -2147483648 , 这仍然是 <= END , 循环一直持续下去。

关于java - java中for循环的特殊行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34126778/

相关文章:

python - 在 Python 中重试 for 循环

javascript - 在 Javascript 中使用按钮退出 for 循环

jvm - 启动时调用 jar 内方法

java - 使用Java代码使用process编译类

java - Windows 上的 JDialog 超出了 Windows 任务栏。任何解决方法?

java - 用 Java 扩展日历

javascript - 按特定顺序对名称数组进行排序

c - 这段代码的输出是什么?您能解释一下逐步的进展吗?

java - 将 Arraylist<子类> 转换为 ArrayList<父类>

java - 当我输入 "done"时我的程序不会停止