Java 一共有 4 类循环:普通for、while、do-while、增强for(for-each),附带循环控制关键字 break、continue。

一、普通 for 循环

1. 语法结构

for(①初始化表达式; ②布尔判断条件; ③更新表达式){
    ④循环体代码;
}

执行顺序:① → ②(成立)→④→③ → ②→④→③……直到②不成立结束

  • ①:只执行1次,定义循环变量
  • ②:每次循环前判断,true执行循环,false终止
  • ③:循环体结束后执行,更新变量

2. 基础示例

// 输出 1~10
for(int i = 1; i <= 10; i++){
    System.out.println(i);
}

3. 灵活写法(全部可省略)

  1. 省略初始化:变量定义在外面
int i = 1;
for(; i <= 5; i++){}
  1. 省略更新:循环体内手动自增
for(int i = 1; i <= 5;){
    i++;
}
  1. 省略条件 → 死循环
for(;;){}

4. 适用场景

已知准确循环次数:计数、遍历固定长度数组、多层嵌套循环。

二、while 循环(先判断,后执行)

1. 语法

while(布尔条件){
    循环体;
}

执行逻辑:先判断条件,条件为true才执行循环;条件false,一次都不运行。

2. 示例

int i = 1;
while(i <= 5){
    System.out.println(i);
    i++; // 必须更新变量,否则死循环
}

3. 死循环写法

while(true){}

4. 适用场景

循环次数不确定,依靠条件控制结束:文件读取、用户输入、动态数据遍历。

三、do-while 循环(先执行,后判断)

1. 语法

do {
    循环体;
} while(布尔条件); // 末尾分号不能丢

核心特点:无论条件是否成立,循环体至少执行1次

2. 示例

int i = 10;
do {
    System.out.println("执行一次");
    i++;
} while(i < 5);
// 输出:执行一次,先运行再判断

3. 适用场景

需要先操作、再校验的场景:密码校验、菜单交互,至少要展示一次界面。

四、增强 for 循环 for-each(专门遍历数组/集合)

1. 语法

for(元素类型 变量 : 数组/集合){
    使用变量
}

2. 数组示例

int[] arr = {10,20,30};
for(int num : arr){
    System.out.println(num);
}

3. 集合示例

ArrayList<String> list = new ArrayList<>();
list.add("Java");
for(String s : list){
    System.out.println(s);
}

4. 优缺点

  • 优点:代码极简,不用下标,不会下标越界
  • 缺点:没有索引,无法获取当前元素下标、不能修改原数组/集合元素

5. 适用场景

只读取数据,不需要下标、不需要修改元素的遍历操作。

五、循环控制关键字 break / continue

1. break

作用:立刻终止当前所在循环,跳出循环块

for(int i=1;i<=5;i++){
    if(i == 3){
        break;
    }
    System.out.println(i); // 输出 1 2
}

2. continue

作用:终止本次循环,直接进入下一轮判断,不结束整个循环

for(int i=1;i<=5;i++){
    if(i == 3){
        continue;
    }
    System.out.println(i); // 输出1 2 4 5
}

3. 带标签break(多层循环跳出)

多层嵌套循环时,指定跳出外层循环

outer: // 外层标签
for(int i=1;i<=3;i++){
    for(int j=1;j<=3;j++){
        if(i==2 && j==2){
            break outer; // 直接结束外层循环
        }
    }
}

六、四种循环对比总结

循环类型 执行特点 是否有索引 使用场景
for 先判断,次数可控 已知循环次数、多层循环
while 先判断,可能一次不执行 无,需自定义变量 次数未知,循环前判断
do-while 先执行,至少运行一次 无,需自定义变量 输入校验、菜单交互
for-each 仅遍历,无判断条件 单纯读取数组/集合

七、高频注意点

  1. while、do-while 内部必须更新循环变量,否则死循环;
  2. for-each 只能读取,不能拿到下标,不能修改原数组;
  3. do-while 结尾必须加分号,语法易错;
  4. break 结束整个循环,continue 只跳过当前一次。

更多推荐