do-while循环至少执行一次,因其先执行循环体再判断条件;而while循环先判断后执行。例如x=0时while(x>10)不输出,do-while则输出一次。

Java 中的 do-while 循环能保证循环体至少执行一次,根本原因在于它的执行顺序:先无条件执行一遍循环体,再判断 while 后的条件表达式是否为 true。这和 while(先判后做)形成明确对比——哪怕条件初始就为 false,第一轮也已运行完毕。
执行机制很直接
它的流程只有三步,固定不变:
- 第一步:进入
do块,执行全部循环体语句 - 第二步:计算
while(...)中的布尔表达式 - 第三步:若结果为
true,回到第一步;若为false,退出循环
和 while 的关键区别
写个最简例子就能看清差异:
int x = 0;
while (x > 10) {
System.out.println("while 执行了");
}
// → 一行不输出
int y = 0;
do {
System.out.println("do-while 执行了");
} while (y > 10);
// → 输出一次“do-while 执行了”
只要语法合法、变量已声明,do 块里的代码就必然跑一次,不依赖任何前提条件。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
立即学习“Java免费学习笔记(深入)”;
为什么这个特性实用
很多真实场景天然要求“先干一次,再看结果”:
- 用户登录:必须至少提示输入一次,不能因初始状态跳过交互
- 网络连接:第一次调用
connect()可能就成功,不该被条件拦在门外 - 文件首行读取:表头信息必须处理,不能用
while ((line = r.readLine()) != null)导致首行被跳过 - 数字位数统计:输入
0时,while会直接跳过,do-while正确返回位数1
写的时候要注意什么
语法简单,但几个细节容易出错:
- 结尾分号不能少:
} while (condition);缺少分号会编译失败 - 控制变量建议显式初始化,比如
String line = null;,避免未定义行为 - 条件里别放赋值或方法调用,例如
while (data = fetchData() != null)是危险写法,应拆开 - 如果循环体含资源操作(如打开文件、分配内存),失败分支要主动清理,否则重试会泄漏

















