选对循环类型关键看执行时机和次数是否明确:已知次数用for,条件驱动用while,至少执行一次用do-while,遍历集合首选for-each。

选对循环类型,关键看“执行时机”和“次数是否明确”。不是语法难,而是用错场景会让逻辑变绕、容易出 bug。
已知循环次数,优先用 for
比如打印 1 到 10、遍历长度固定的数组、计算前 N 项和——这些都适合 for 循环。它的三部分(初始化、条件、迭代)写在一起,结构清晰,不易漏掉计数器更新。
- 初始化只执行一次,适合定义并设置起始值
- 条件在每次循环前判断,安全可控
- 迭代语句紧随循环体之后,更新逻辑不容易被忽略
条件驱动、次数不确定,选 while
当你不知道要跑几轮,只关心“满足什么条件就继续”,比如读取用户输入直到输入 quit、等待某个对象状态变为 ready、处理队列直到为空——这时 while 更自然。
- 先判断再执行,如果初始条件就不成立,循环体一次也不跑
- 把状态检查和业务逻辑分开写,可读性高
- 注意:必须在循环体内修改判断变量,否则可能死循环
必须至少执行一次,用 do-while
典型场景是菜单交互、输入校验、初始化后确认——比如“先显示菜单,再等用户选择;选错就重来”。它先干一次,再问要不要再来。
- 循环体无条件执行一遍,适合需要“默认行为”的逻辑
- 条件写在末尾,容易看清退出边界
- 注意分号不能丢:
while (condition);
遍历集合或数组,首选 for-each
只要不需索引、不需修改原集合、不需中途控制步长,for-each 就是最简方案。它屏蔽了底层迭代细节,代码干净,出错率低。
- 语法简洁:
for (Type item : collection) - 自动调用 iterator,不用手动管理 hasNext() / next()
- 不能直接删除元素(会抛 ConcurrentModificationException),如需边遍历边删,改用 Iterator
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











