You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Java中写在infinite loop之后的代码仍然可以执行?

Java循环后语句可执行的原因解释

相关测试代码如下:

public class Main{
    public static void main(String[] args){
        for(int i=0; i>=0; i++){}
        System.out.println("Hello, World"); // This is printed on the console
    }
}

该现象的核心原因是Java int类型的整数溢出:

  • Java中int是32位有符号整数,固定取值范围为 -2147483648 到 2147483647,不存在无限增大的可能
  • 循环中i从0开始逐次自增,当i到达最大值2147483647后,再执行一次自增操作会触发有符号整数溢出,计算结果会回卷为int的最小值-2147483648
  • 此时循环判断条件i >= 0不再成立,循环正常终止,后续的打印语句自然会被执行

注:该循环实际会执行21亿余次,在普通设备上原生执行需要数秒到数十秒才能完成循环退出,如果运行时瞬间就得到输出,大概率是编译期JIT做了优化,直接识别到了循环的最终退出条件,跳过了实际循环执行过程。

内容的提问来源于stack exchange,提问作者Ayush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 08:45:10