全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-09 6 分钟 ✍️ juanwangdev

break和continue

break和continue用于控制循环执行流程。

break语句

break跳出循环

break立即结束整个循环。

Java
for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        break;  // 跳出循环
    }
    System.out.println(i);
}
// 输出:1, 2, 3, 4
// 循环在i=5时结束

break跳出while循环

Java
int i = 1;

while (i <= 10) {
    if (i == 5) {
        break;  // 跳出循环
    }
    System.out.println(i);
    i++;
}
// 输出:1, 2, 3, 4

break跳出do-while循环

Java
int i = 1;

do {
    if (i == 5) {
        break;  // 跳出循环
    }
    System.out.println(i);
    i++;
} while (i <= 10);
// 输出:1, 2, 3, 4

break跳出switch

Java
int day = 3;

switch (day) {
    case 1:
        System.out.println("星期一");
        break;  // 跳出switch
    case 2:
        System.out.println("星期二");
        break;
    default:
        System.out.println("其他");
}

continue语句

continue跳过当前循环

continue跳过本次循环,继续下一次。

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

continue在while循环

Java
int i = 0;

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

continue在do-while循环

Java
int i = 0;

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

break与continue对比

执行效果对比

特性breakcontinue
作用结束整个循环跳过本次循环
执行后循环结束继续下一次
循环次数可能提前结束不减少次数
Java
// break:结束整个循环
for (int i = 1; i <= 5; i++) {
    if (i == 3) break;
    System.out.println(i);
}
// 输出:1, 2(循环结束)

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

break应用场景

查找元素提前退出

Java
int[] arr = {1, 2, 3, 4, 5};
int target = 3;

for (int i = 0; i < arr.length; i++) {
    if (arr[i] == target) {
        System.out.println("找到,索引:" + i);
        break;  // 找到后退出
    }
}

条件满足退出

Java
int sum = 0;

for (int i = 1; i <= 100; i++) {
    sum += i;
    if (sum > 1000) {
        System.out.println("i=" + i + "时超过1000");
        break;  // 满足条件退出
    }
}

无限循环退出

Java
while (true) {  // 无限循环
    String input = getInput();
    
    if ("exit".equals(input)) {
        break;  // 输入exit退出
    }
    
    process(input);
}

错误处理退出

Java
for (Item item : items) {
    if (!validate(item)) {
        System.out.println("验证失败");
        break;  // 错误退出
    }
    process(item);
}

continue应用场景

过滤特定元素

Java
int[] arr = {1, 2, 3, 4, 5, 6};

// 只处理偶数
for (int num : arr) {
    if (num % 2 != 0) {
        continue;  // 跳过奇数
    }
    System.out.println(num);  // 输出偶数:2, 4, 6
}

跳过无效数据

Java
String[] names = {"张三", null, "李四", "", "王五"};

for (String name : names) {
    if (name == null || name.isEmpty()) {
        continue;  // 跳过空值
    }
    System.out.println(name);
}
// 输出:张三, 李四, 王五

跳过特定条件

Java
for (int i = 1; i <= 100; i++) {
    if (i % 10 == 0) {
        continue;  // 跳过10的倍数
    }
    System.out.println(i);
}
// 输出:1-99(跳过10, 20, 30...)

异常情况跳过

Java
for (Data data : dataList) {
    try {
        process(data);
    } catch (Exception e) {
        continue;  // 异常时跳过,继续下一个
    }
}

嵌套循环中的break和continue

默认只影响当前循环

Java
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        if (j == 2) {
            break;  // 只跳出内层循环
        }
        System.out.println(i + ", " + j);
    }
}
// 输出:(1,1) (2,1) (3,1)
// 内层循环在j=2时跳出,外层继续

continue只跳过内层本次

Java
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        if (j == 2) {
            continue;  // 只跳过内层j=2
        }
        System.out.println(i + ", " + j);
    }
}
// 输出:(1,1) (1,3) (2,1) (2,3) (3,1) (3,3)

带标签的break和continue

标签语法

Java
outer:  // 标签
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        if (i == 2 && j == 2) {
            break outer;  // 跳出外层循环
        }
        System.out.println(i + ", " + j);
    }
}
// 输出:(1,1) (1,2) (1,3) (2,1)
// 在i=2,j=2时跳出外层循环

带标签的break跳出外层

Java
outer:
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        if (i + j == 5) {
            break outer;  // 跳出外层循环
        }
        System.out.println(i + ", " + j);
    }
}

带标签的continue继续外层

Java
outer:
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        if (j == 2) {
            continue outer;  // 继续外层下一次
        }
        System.out.println(i + ", " + j);
    }
}
// 输出:(1,1) (2,1) (3,1)
// j=2时跳到外层下一次

break和continue最佳实践

选择合适的使用场景

Java
// break:需要提前结束整个循环
for (Item item : items) {
    if (item == target) {
        break;  // 找到后结束
    }
}

// continue:需要跳过特定元素
for (Item item : items) {
    if (item.isInvalid()) {
        continue;  // 跳过无效项
    }
    process(item);
}

避免过度使用

Java
// 不推荐:过度使用break/continue使流程复杂
for (int i = 0; i < 10; i++) {
    if (condition1) continue;
    if (condition2) continue;
    if (condition3) break;
    // 流程复杂难理解
}

// 推荐:合并条件或使用其他方式
for (int i = 0; i < 10; i++) {
    if (!condition1 && !condition2) {
        process(i);
        if (condition3) break;
    }
}

标签命名清晰

Java
// 推荐:标签名清晰描述循环
search:
for (int i = 0; i < data.length; i++) {
    for (int j = 0; j < data[i].length; j++) {
        if (found) {
            break search;  // 清晰:跳出搜索循环
        }
    }
}

要点总结

  • break结束整个循环
  • continue跳过本次循环,继续下一次
  • break可用于循环和switch
  • continue只用于循环
  • 默认只影响当前循环层
  • 嵌套循环中只跳出/跳过内层
  • 带标签可跳出/跳过外层循环
  • 标签语法:标签名: 循环
  • break 标签跳出指定循环
  • continue 标签跳到指定循环下一次
  • break用于查找、条件退出
  • continue用于过滤、跳过特定元素
  • 避免过度使用,保持流程清晰

📝 发现内容有误?点击此处直接编辑

← 上一篇 System类
下一篇 → do-while循环
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库