一、break:终止整个循环

作用

直接结束当前所在循环,跳出循环体,执行循环后面代码。

1. 基础用法(单层循环)

// 输出1、2,i=3时直接结束循环
for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        break;
    }
    System.out.println(i);
}

输出:

1
2

2. 多层循环:普通break只能跳出内层

// 内层break只结束内层循环,外层继续执行
for (int i = 1; i <= 2; i++) {
    for (int j = 1; j <= 3; j++) {
        if (j == 2) {
            break;
        }
        System.out.print(j + " ");
    }
    System.out.println();
}

输出:

1 
1 

3. 带标签break:跳出指定外层循环

语法:标签名: 循环break 标签名;

outer: // 给外层循环打标签
for (int i = 1; i <= 2; i++) {
    for (int j = 1; j <= 3; j++) {
        if (j == 2) {
            break outer; // 直接终止外层循环
        }
        System.out.print(j + " ");
    }
}

输出:

1 

使用场景

满足条件不需要再循环,直接退出:查找数据找到后终止、密码输入正确退出循环。


二、continue:跳过本次循环,进入下一轮

作用

立刻结束当前这一次循环,剩余代码不执行,直接走到循环条件判断,开启下一轮。

1. 单层循环示例

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

输出:

1
2
4
5

2. while循环使用continue(坑点)

while中使用continue必须更新变量,否则死循环:

int i = 1;
while (i <= 5) {
    if (i == 3) {
        i++; // 先自增再continue,防止死循环
        continue;
    }
    System.out.println(i);
    i++;
}

3. 带标签continue:跳过外层本轮循环

outer:
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 2; j++) {
        if (i == 2 && j == 1) {
            continue outer; // 直接跳过外层这一轮,i++
        }
        System.out.println("i=" + i + ",j=" + j);
    }
}

使用场景

过滤不需要的数据:跳过负数、跳过空值、只打印符合条件内容。


三、break vs continue 核心区别

  1. break:彻底结束整个循环,循环不再执行;
  2. continue:仅跳过当前一次,循环还会继续下一次;

四、常见注意事项

  1. break/continue 后面不能写代码,会编译报错(永远执行不到)
    if(i==3){
        break;
        System.out.println(); // 报错,不可达代码
    }
    
  2. do-while 使用continue,同样要保证变量更新;
  3. 增强for循环同样支持break、continue;
  4. 标签只能写在循环语句前,仅配合break/continue使用;
  5. 不要滥用多层标签,代码可读性变差。

更多推荐