1. 概述

本文带你深入理解 Java 中的一个基础但至关重要的控制结构——while 循环。它用于在条件为真时,重复执行一段代码逻辑,是编写动态流程控制的必备技能。

对于有经验的开发者来说,while 可能看起来简单,但在复杂业务逻辑、状态轮询、资源等待等场景下,用好它能避免不少踩坑。

2. While 循环详解

while 循环是 Java 中最原始、最直接的循环结构之一。它的核心逻辑是:只要布尔表达式为 true,就持续执行循环体

2.1 基本语法

while (布尔表达式) 
    语句;

或者更常见的块形式:

while (布尔表达式) {
    // 多条语句
}

⚠️ 关键点:布尔表达式在每次循环开始前都会被评估,包括第一次。这意味着:

  • ✅ 如果条件一开始就是 false,循环体一次都不会执行
  • ❌ 这与 do-while 不同,后者至少执行一次

这个特性在处理边界条件时要特别注意,否则容易出现“预期会执行但实际跳过”的 bug。

2.2 简单示例

下面是一个典型的计数循环:

int i = 0;
while (i < 5) {
    System.out.println("While loop: i = " + i++);
}

输出结果为:

While loop: i = 0
While loop: i = 1
While loop: i = 2
While loop: i = 3
While loop: i = 4

📌 解析:

  • i++ 是后缀自增,先使用 i 的值,再加 1
  • 循环从 i = 0 开始,到 i = 4 结束,共执行 5 次
  • i = 5 时,条件 i < 5 不成立,循环终止

2.3 实际应用场景

虽然 for 循环在计数场景更常见,但 while 在以下情况更合适:

不确定迭代次数的场景
比如读取流、监听状态、等待资源就绪:

BufferedReader reader = new BufferedReader(new FileReader("data.txt"));
String line;
while ((line = reader.readLine()) != null) {
    process(line);
}

条件依赖外部变化
例如轮询某个标志位:

while (!task.isCompleted()) {
    Thread.sleep(100);
}

⚠️ 踩坑提醒:

  • 忘记在循环体内修改条件变量,导致死循环
  • 在多线程环境下未正确同步共享变量,造成无限等待

3. 总结

while 循环看似简单,但它是构建复杂控制流的基石。掌握其“先判断后执行”的特性,能帮助你在处理异步任务、I/O 流、状态机等场景时写出更稳健的代码。

文中所有示例代码均可在 GitHub 上找到:

https://github.com/baeldung/core-java-modules/tree/master/core-java-lang-syntax


原始标题:Java While Loop | Baeldung

« 上一篇: Java for 循环详解