Java循环语句for、while和do-while的用法

发布时间 - 2026-01-07 00:00:00    点击率:
for循环适合已知迭代次数的场景,其三部分结构逻辑集中、不易漏更新,常见错误是分号位置写错。

for 循环适合已知迭代次数的场景

当你清楚要执行多少次,或者遍历一个确定长度的数组、集合时,for 最直观。它的三部分结构(初始化、条件判断、更新)写在一行,逻辑集中,不易漏掉循环变量更新。

常见错误是把分号写错位置,比如 for (int i = 0; i 结尾多了一个分号,导致循环体为空,只执行了五次空操作。

  • 初始化语句只执行一次,通常定义并赋值循环变量
  • 条件表达式在每次循环开始前判断,为 false 时立即退出
  • 更新语句在每次循环体执行完后运行,不是在条件判断之后立刻执行
for (int i = 0; i < 3; i++) {
    System.out.println("i = " + i);
}
// 输出:i = 0, i = 1, i = 2

while 循环强调“条件优先”,适合不确定次数但有明确退出条件的情况

while 在进入循环体前就检查条件,如果初始条件就不满足,循环体一次都不会执行。它比 for 更灵活,适合读取输入、等待状态变化、处理链表等。

容易踩的坑是忘记在循环体内修改判断变量,造成死循环;或者把条件写反,比如用 != 判断浮点数是否到达目标值,因精度问题永远不相等。

  • 必须确保循环体内有能影响条件表达式的语句
  • 条件中避免使用 ==!= 比较浮点数
  • 如果需要先执行再判断,别硬套 while,改用 do-while
int count = 0;
while (count < 3) {
    System.out.println("count = " + count);
    count++; // 忘记这行就会死循环
}

do-while 至少执行一次,适合“先做再问”的交互逻辑

do-while 的特点是循环体无条件执行一次,然后才检查条件。它天然适合菜单选择、用户输入校验这类“至少试一次”的场景。

注意分号不能省:do { ... } while (condition); 结尾的分号是语法必需,漏掉会编译报错 error: ';' expected

  • 条件写在末尾,括号外必须带分号
  • 条件判断的是“是否继续”,不是“是否开始”
  • while 相比,它不适用于需要跳过首次执行的逻辑
int choice;
do {
    System.out.print("Enter 1 to continue, 0 to exit: ");
    choice = scanner.nextInt();
} while (choice != 0);

三种循环性能没区别,选哪个取决于控制逻辑的自然性

JVM 对这三种循环生成的字节码几乎一致,性能差异可以忽略。真正影响可读性和健壮性的是你是否匹配了语义:遍历数组用 for,等待某个状态用 while,强制至少执行一次用 do-while

一个常被忽略的细节是作用域:在 for (int i = 0; ...) 中声明的 i 只在循环内可见;而 whiledo-while 中若在外部声明变量,该变量在循环结束后仍可访问——这点会影响命名冲突和内存生命周期判断。


# java  # 字节  # 区别  # 作用域 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何获取免费开源的自助建站系统源码?  如何在Ubuntu系统下快速搭建WordPress个人网站?  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel如何使用Service Container和依赖注入?(代码示例)  利用vue写todolist单页应用  智能起名网站制作软件有哪些,制作logo的软件?  SQL查询语句优化的实用方法总结  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  如何登录建站主机?访问步骤全解析  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  Laravel如何升级到最新版本?(升级指南和步骤)  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  如何用免费手机建站系统零基础打造专业网站?  香港网站服务器数量如何影响SEO优化效果?  如何在IIS服务器上快速部署高效网站?  Laravel中的Facade(门面)到底是什么原理  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  文字头像制作网站推荐软件,醒图能自动配文字吗?  EditPlus中的正则表达式实战(6)  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  Laravel如何创建自定义Facades?(详细步骤)  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  iOS UIView常见属性方法小结  韩国服务器如何优化跨境访问实现高效连接?  如何在万网主机上快速搭建网站?  如何为不同团队 ID 动态生成多个独立按钮  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何为不同团队 ID 动态生成多个非值班状态按钮  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  制作公司内部网站有哪些,内网如何建网站?  Android实现代码画虚线边框背景效果  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  利用python获取某年中每个月的第一天和最后一天  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  如何在阿里云服务器自主搭建网站?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  如何在建站之星绑定自定义域名?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  香港服务器WordPress建站指南:SEO优化与高效部署策略  PHP 500报错的快速解决方法  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  网站页面设计需要考虑到这些问题  如何用低价快速搭建高质量网站?  Python文本处理实践_日志清洗解析【指导】  如何快速登录WAP自助建站平台?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Swift中循环语句中的转移语句 break 和 continue