在编程中,循环(Loops) 是一种控制结构,它允许我们根据特定条件重复执行一段代码。Java 提供了多种循环语句,适用于不同场景。本文将系统讲解 Java 中的三种主要循环类型(包括增强型 for 循环),并通过示例、流程图和常见错误分析,帮助你掌握循环的正确使用方法。
理解 Java 中 for、while 和 do-while 循环的基本语法与执行流程
掌握增强型 for(for-each)循环的使用场景
能够识别并避免常见的循环陷阱(如无限循环、边界错误等)
根据实际需求选择合适的循环类型
详情请参考《Java 中的 for 循环》
当你明确知道需要重复执行的次数时,应优先使用 for 循环。

for (初始化; 条件; 增量/减量) {
// 要执行的代码
}// Java 程序演示 for 循环
import java.io.*;
class Main {
public static void main(String[] args) {
for (int i = 0; i <= 10; i++) {
System.out.print(i + " ");
}
}
}0 1 2 3 4 5 6 7 8 9 10 初始化:声明并初始化循环变量(如 int i = 0),仅执行一次。
条件判断:每次循环前检查条件(如 i <= 10),若为 true 则继续,否则退出。
执行语句:运行循环体内的代码。
更新变量:执行增量或减量操作(如 i++)。
重复:回到第 2 步,直到条件为 false。
✅ 注意:
for循环是入口控制循环(Entry-Controlled Loop),即先判断条件再执行。
用于遍历数组或集合中的每个元素,无需手动管理索引。
语法
for (数据类型 变量 : 数组或集合) {
// 处理当前元素
}示例:遍历字符串数组
// 演示 for-each 循环
import java.io.*;
class Main {
public static void main(String[] args) {
String[] names = { "Sweta", "Gudly", "Amiya" };
for (String name : names) {
System.out.println("Name: " + name);
}
}
}输出
Name: Sweta
Name: Gudly
Name: Amiya✅ 优点:代码简洁、不易出错,特别适合只读遍历。
详情请参考《Java 中的 while 循环》
当不确定循环次数,但希望在每次执行前先检查条件时使用。

while (条件) {
// 要执行的代码
}import java.io.*;
class Main {
public static void main(String[] args) {
int i = 0;
while (i <= 10) {
System.out.print(i + " ");
i++;
}
}
}输出:
0 1 2 3 4 5 6 7 8 9 10 也是入口控制循环:先判断条件,再决定是否执行。
必须在循环体内更新控制变量,否则可能陷入死循环。
详情请参考《Java 中的 do-while 循环》
当你必须确保循环体至少执行一次,无论条件是否满足。

do {
// 要执行的代码
} while (条件);import java.io.*;
class Main {
public static void main(String[] args) {
int i = 0;
do {
System.out.print(i + " ");
i++;
} while (i <= 10);
}
}输出
0 1 2 3 4 5 6 7 8 9 10 出口控制循环:先执行一次循环体,再判断条件。
即使初始条件为 false,循环体也会执行一次。
原因:循环条件永远为真,导致程序无法终止。
错误示例
for (int i = 0; i < 5; i--) { // i 不断减小,永远小于 5
System.out.println("This loop will run forever");
}后果:程序卡死或触发超时错误(TLE)。
✅ 解决方法:确保循环变量朝着使条件为假的方向变化。
原因:循环多执行或少执行一次,通常因使用 <= 与 < 混淆导致。
错误示例(期望执行 5 次,实际 6 次):
for (int i = 0; i <= 5; i++) { // i = 0,1,2,3,4,5 → 共 6 次
System.out.print(i + " ");
}✅ 建议:明确循环范围,使用半开区间(如 i < n 表示 0 到 n-1)。
问题:可能导致跳过迭代或逻辑混乱。
问题示例:
for (int i = 0; i < 5; i++) {
if (i == 2) {
i++; // 手动增加 i,导致 i=3 被跳过
}
System.out.println(i);
}输出:
0
1
2
4✅ 最佳实践:避免在循环体内直接修改循环变量,除非有充分理由并清晰注释。
问题:循环没有实际操作,浪费资源且降低可读性。
示例:
for (int i = 0; i < 10; i++) {
// 空语句,无任何操作
}✅ 建议:若确实需要空循环(如延时),应添加注释说明意图;否则应删除或重构。
为什么 do-while 循环被称为“出口控制循环”?请结合其执行流程说明。
在什么情况下你会选择 for-each 循环而不是传统的 for 循环?它有哪些限制?
分析以下代码是否会陷入无限循环?为什么?
int x = 10;
while (x > 0) {
System.out.println(x);
x -= 2;
}