温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java while循环为什么死循环

发布时间:2026-10-29 21:29:19 来源:亿速云 阅读:98 作者:小樊 栏目:编程语言

在 Java 里,while 循环出现死循环(infinite loop),根本原因只有一个:

循环条件永远为 true,或者条件中用于终止循环的状态永远不会改变。

下面分几种常见情况说明。


1️⃣ 条件直接写成 true

while (true) {
    System.out.println("死循环");
}

这是最典型、最明确的死循环。


2️⃣ 循环变量没有被修改

int i = 0;
while (i < 10) {
    System.out.println(i);
}

❌ 问题:i 永远还是 0,条件永远成立。

✅ 正确写法:

int i = 0;
while (i < 10) {
    System.out.println(i);
    i++;
}

3️⃣ 修改了变量,但改错地方 / 改错变量

int i = 0;
while (i < 10) {
    int i = 1; // 这是新变量,外面的 i 没变
}

或:

int i = 0;
while (i < 10) {
    i--; // 越减越小
}

4️⃣ 浮点数精度问题(隐蔽死循环)

double d = 0.0;
while (d != 1.0) {
    d += 0.1;
}

❌ 因为 0.1 不能精确表示,可能永远不等于 1.0。

✅ 推荐:

while (d < 1.0) {
    d += 0.1;
}

5️⃣ 多线程中状态没同步

boolean running = true;

while (running) {
    // 其他线程改了 running,但没加 volatile
}

可能主线程看不到变化,导致“看起来像死循环”。


6️⃣ 忘了 break 或 return

while (true) {
    if (x > 10) {
        // 忘记 break
    }
}

✅ 总结一句话

Java 的 while 死循环,99% 都是因为:条件里用来退出的变量“没变”或“变不了”。

如果你愿意,可以把你写的 while 循环代码贴出来,我可以直接帮你指出是哪一行导致死循环的。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手