在 Java 中,循环变成“死循环”,本质原因只有一个:
循环条件永远为 true,或者循环变量永远无法按预期改变,导致退出条件永远不满足。
下面按常见情况给你系统讲一下。
while (true) {
System.out.println("死循环");
}
或
for (;;) {
System.out.println("死循环");
}
✅ 这是故意的死循环(常用来写服务器、监听程序)
int i = 0;
while (i < 10) {
System.out.println(i);
// 忘记 i++
}
❌ i 永远为 0,条件永远成立
✅ 正确写法:
while (i < 10) {
System.out.println(i);
i++;
}
int i = 0;
while (i < 10) {
System.out.println(i);
i--; // 越减越小
}
❌ i 永远小于 10
double i = 0.0;
while (i != 1.0) {
i += 0.1;
}
❌ 浮点数有精度误差,i 可能永远不等于 1.0
✅ 推荐写法:
while (i < 1.0) {
i += 0.1;
}
for (int i = 0; i < 10; i++) {
i--; // 自己把 i 减回去
}
❌ i 永远在 0 附近震荡
int i = 0;
while (i < 10) {
if (i % 2 == 0) {
continue; // 直接回到条件判断
}
i++;
}
❌ 当 i=0 时永远 continue
✅ 正确:
while (i < 10) {
if (i % 2 != 0) {
// do something
}
i++;
}
boolean flag = true;
new Thread(() -> {
while (flag) {}
}).start();
flag = false;
❌ 线程可能读不到最新值(未加 volatile)
✅ 正确:
volatile boolean flag = true;
✅ 写循环前先问自己三个问题
continue / break / 异常 干扰?✅ 调试技巧
for (int i = 0; i < 1000; i++) {
if (i == 999) break;
}
✅ IDE 工具
Java 死循环不是语言问题,而是逻辑问题: 条件不收敛 + 变量不更新 = 死循环
如果你有具体代码,我可以直接帮你指出是哪一行导致的死循环。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。