这两种循环都用于在某个条件为 true 时,重复执行一段代码,它们的核心区别在于条件的检查时机。

while 循环
while 循环是一种“先判断,后执行”的循环结构。
它的工作流程是:
- 首先计算
while关键字后面的条件表达式。 - 如果条件表达式的结果为
true,则执行循环体(大括号 中的代码)。 - 执行完循环体后,再次回到第 1 步,重新检查条件。
- 如果条件表达式的结果为
false,则循环终止,程序继续执行while循环之后的代码。
语法格式:
while (条件表达式) {
// 循环体 (要重复执行的代码)
}
特点:

- 入口条件判断:在每次循环开始前,都会检查条件。
- 可能一次都不执行:如果一开始条件就是
false,那么循环体内的代码将永远不会被执行。
while 循环示例
示例 1:基本的 while 循环
public class WhileExample {
public static void main(String[] args) {
int count = 1; // 初始化计数器
System.out.println("开始使用 while 循环打印数字 1 到 5:");
// 条件是 count 小于或等于 5
while (count <= 5) {
System.out.println("当前数字是: " + count);
count++; // 重要:更新计数器,否则会变成无限循环
}
System.out.println("循环结束。");
}
}
输出:
开始使用 while 循环打印数字 1 到 5:
当前数字是: 1
当前数字是: 2
当前数字是: 3
当前数字是: 4
当前数字是: 5
循环结束。
代码解析:
int count = 1;定义并初始化一个变量count,通常称为“循环变量”或“计数器”。while (count <= 5)检查count是否小于或等于 5。- 第一次进入循环时,
count是 1,条件为true,执行System.out.println(...)。 count++将count的值增加 1,变为 2。- 循环回到第 2 步,再次检查
count <= 5。count是 2,条件仍为true,再次执行循环体。 - 这个过程一直重复,直到
count变为 6。count <= 5的结果为false,循环终止。
无限 while 循环
如果你忘记在循环体内更新循环变量,或者条件永远无法为 false,就会导致无限循环。

// 这是一个无限循环的例子,请勿在实际代码中轻易使用
// while (true) {
// System.out.println("我永远在运行!");
// }
do-while 循环
do-while 循环是一种“先执行,后判断”的循环结构。
它的工作流程是:
- 首先执行一次
do关键字后面的循环体。 - 执行完循环体后,计算
while关键字后面的条件表达式。 - 如果条件表达式的结果为
true,则再次回到第 1 步,执行循环体。 - 如果条件表达式的结果为
false,则循环终止。
语法格式:
do {
// 循环体 (至少会执行一次的代码)
} while (条件表达式); // 注意:这里的分号 `;` 不能少!
特点:
- 出口条件判断:在每次循环结束后,才检查条件。
- 至少执行一次:无论条件一开始是
true还是false,循环体内的代码至少会被执行一次。
do-while 循环示例
示例 2:基本的 do-while 循环
public class DoWhileExample {
public static void main(String[] args) {
int count = 1;
System.out.println("开始使用 do-while 循环打印数字 1 到 5:");
// 先执行一次循环体,然后再检查条件
do {
System.out.println("当前数字是: " + count);
count++;
} while (count <= 5); // 别忘了分号!
System.out.println("循环结束。");
}
}
输出:
开始使用 do-while 循环打印数字 1 到 5:
当前数字是: 1
当前数字是: 2
当前数字是: 3
当前数字是: 4
当前数字是: 5
循环结束。
在这个例子中,while 和 do-while 的输出结果是一样的,因为条件在第一次执行时就是 true。
do-while 循环的典型应用场景
do-while 循环非常适合用于“至少执行一次”的场景,比如获取用户输入。
示例 3:验证用户输入
import java.util.Scanner;
public class DoWhileUserInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String password;
String correctPassword = "secret123";
// 至少会要求用户输入一次密码
do {
System.out.print("请输入密码: ");
password = scanner.nextLine();
if (!password.equals(correctPassword)) {
System.out.println("密码错误,请重试!");
}
} while (!password.equals(correctPassword)); // 只要密码不正确,就继续循环
System.out.println("密码正确!欢迎进入系统。");
scanner.close();
}
}
代码解析:
- 无论用户第一次输入什么,程序都会先执行
do块中的代码,即提示输入并读取密码。 - 然后检查
while的条件:!password.equals(correctPassword)(即“密码不等于正确密码”)。 - 如果用户输入错了,条件为
true,循环继续,再次要求输入。 - 只有当用户输入了正确的密码后,条件才为
false,循环结束。
如果这里用 while 循环,程序会先检查条件,但此时 password 还没有被赋值,逻辑上会变得复杂且不符合“至少输入一次”的需求。
while vs do-while 对比总结
| 特性 | while 循环 |
do-while 循环 |
|---|---|---|
| 执行顺序 | 先判断条件,后执行循环体 | 先执行循环体,后判断条件 |
| 执行次数 | 可能执行 0 次(如果初始条件为 false) |
至少执行 1 次 |
| 语法 | while (条件) { ... } |
do { ... } while (条件); |
| 适用场景 | 当循环体可能不需要执行时 | 当循环体必须至少执行一次时,如处理用户输入、菜单选择等 |
| 注意事项 | 容易因忘记初始化或更新变量而造成无限循环 | 别忘了结尾的分号 |
选择哪个?
- 如果你不确定循环体是否应该被执行(检查一个列表是否为空再遍历),使用
while。 - 如果你的循环体必须至少执行一次(向用户提问直到得到有效答案),使用
do-while。
希望这个详细的解释能帮助你完全理解 Java 中的 while 和 do-while 循环!
