在 Java 中,while 循环变成死循环(无限循环),本质原因只有一个:
循环条件一直为 true,且循环体内没有改变条件的可能
下面从常见原因、示例代码和解决办法三个方面说明。
while (条件) {
// 循环体
}
true → 继续执行false → 退出循环如果条件永远 true,就是死循环。
while (true) {
System.out.println("死循环");
}
✅ 这是典型死循环(常用于服务器、监听程序)。
int i = 0;
while (i < 10) {
System.out.println(i);
// 忘记 i++
}
❌ i 永远是 0,条件永远成立。
✅ 正确写法:
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
int i = 0;
while (i < 10) {
System.out.println(i);
i--; // 越减越小
}
❌ i 永远小于 10。
double d = 0.0;
while (d != 1.0) {
d += 0.1;
}
❌ 浮点数误差导致 d 永远不等于 1.0
✅ 改进:
while (d < 1.0) {
d += 0.1;
}
boolean running = true;
while (running) {
// 其他线程改了 running,但没加 volatile
}
❌ 线程可能看不到最新值,导致死循环。
✅ 使用 volatile 或 AtomicBoolean
while (true) {
// 等待输入、网络、锁
}
❌ 如果外部条件永远不满足,也会“卡死”
✅ 编写建议:
<、> 而不是 ==breakvolatile / synchronized示例(安全写法):
int i = 0;
while (i < 10) {
if (someError) break;
i++;
}
Java 中 while 死循环的本质:循环条件永远为 true,且没有任何方式让它变 false。
如果你愿意,可以把你的 while 循环代码贴出来,我可以帮你精准分析是哪一类问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。