在 Java 里,while 循环出现死循环(infinite loop),根本原因只有一个:
循环条件永远为
true,或者条件中用于终止循环的状态永远不会改变。
下面分几种常见情况说明。
truewhile (true) {
System.out.println("死循环");
}
这是最典型、最明确的死循环。
int i = 0;
while (i < 10) {
System.out.println(i);
}
❌ 问题:i 永远还是 0,条件永远成立。
✅ 正确写法:
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
int i = 0;
while (i < 10) {
int i = 1; // 这是新变量,外面的 i 没变
}
或:
int i = 0;
while (i < 10) {
i--; // 越减越小
}
double d = 0.0;
while (d != 1.0) {
d += 0.1;
}
❌ 因为 0.1 不能精确表示,可能永远不等于 1.0。
✅ 推荐:
while (d < 1.0) {
d += 0.1;
}
boolean running = true;
while (running) {
// 其他线程改了 running,但没加 volatile
}
可能主线程看不到变化,导致“看起来像死循环”。
break 或 returnwhile (true) {
if (x > 10) {
// 忘记 break
}
}
Java 的 while 死循环,99% 都是因为:条件里用来退出的变量“没变”或“变不了”。
如果你愿意,可以把你写的 while 循环代码贴出来,我可以直接帮你指出是哪一行导致死循环的。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。