源本科技 | 码上会

Java 中的 continue 语句

2025/12/25
12
0

学习目标

  • 掌握 continue 语句在 forwhiledo-while 循环中的使用方式

  • 理解 continue 在不同循环类型中的执行机制差异

  • 能够在嵌套循环中正确使用 continue 控制内层循环

  • 区分 continuebreak 的行为差异

  • 避免因忘记更新变量导致的无限循环


什么是 continue 语句?

在 Java 中,continue 是一种跳转语句(Jump Statement),用于跳过当前循环迭代的剩余部分,并立即进入下一次循环的条件判断或更新阶段

✅ 核心作用:“跳过本次,继续下次”

它适用于所有类型的循环:

  • for

  • while

  • do-while


基础示例

public class Main {
    public static void main(String args[]) {
        for (int i = 0; i <= 5; i++) {
            if (i == 3)
                continue; // 跳过 i=3 的输出
            System.out.print(i + " ");
        }
    }
}

输出结果

0 1 2 4 5 

说明

  • i == 3 时,continue 触发

  • System.out.print(...) 被跳过

  • 控制流直接跳到 i++(更新表达式),然后判断 i <= 5


在不同循环中的执行机制

1. 在 for 循环中

for (初始化; 条件; 更新) {
    // ...
    continue; // 直接跳到“更新”部分
    // ...
}

🔁 执行顺序:continue → 执行更新表达式 → 判断条件 → 下一轮


2. 在 while 循环中

int c = 0;
while (c <= 5) {
    if (c == 3) {
        c++;       // 必须手动更新!
        continue;  // 直接跳到 while 条件判断
    }
    System.out.print(c + " ");
    c++;
}

输出: 0 1 2 4 5

⚠️ 关键点:while 循环没有自动更新机制,若在 continue 前不更新变量(如 c++),会导致无限循环


3. 在 do-while 循环中

int i = 0;
do {
    if (i == 3) {
        i++;
        continue; // 跳到 while 条件判断
    }
    System.out.print(i + " ");
    i++;
} while (i <= 5);

输出: 0 1 2 4 5

✅ 与 while 类似,需手动确保变量更新,否则可能死循环。


嵌套循环中的 continue

仅影响内层循环

continue 默认只作用于最内层的循环。这是初学者常混淆的点。

示例:跳过 (3,2) 组合

for (int i = 1; i <= 4; i++) {
    for (int j = 1; j <= 3; j++) {
        if (i == 3 && j == 2) {
            continue; // 仅跳过本次内层循环
        }
        System.out.print(i + "." + j + "  ");
    }
    System.out.println();
}

输出:

1.1  1.2  1.3  
2.1  2.2  2.3  
3.1  3.3          // ← 3.2 被跳过
4.1  4.2  4.3  

结论continue 不会跳出外层循环,仅控制当前所在循环。

💡 若需跳出外层循环,应使用带标签的 break(非 continue


continue 与 break 对比

特性

continue

break

作用

跳过当前迭代,继续下一次

立即终止整个循环

循环次数

总次数不变(只是某次不执行完整体)

总次数减少

适用场景

过滤特定值、跳过无效数据

提前结束、找到目标后退出

同时使用 break 和 continue

for (int i = 1; i <= 10; i++) {
    if (i == 3) continue; // 跳过 3
    if (i == 7) break;    // 遇到 7 就退出
    System.out.print(i + " ");
}

输出:

1 2 4 5 6

✅ 先跳过 3,再在 7 处终止,体现了两种跳转语句的协同使用。


注意事项

常见错误

在 while/do-while 中忘记更新变量

int x = 0;
while (x < 5) {
    if (x == 2) {
        continue; // 没有 x++!
    }
    x++;
}
// → 当 x=2 时,永远无法更新,陷入死循环!

正确做法

  • continue 之前更新变量,或

  • 将更新放在循环体末尾,并确保 continue 不绕过它


最佳实践

  1. 优先用于数据过滤

    for (String item : list) {
        if (item.isEmpty()) continue;
        process(item);
    }
  2. 避免深层嵌套
    使用 continue 可减少 if 嵌套层级,提高可读性:

    ❌ 深层嵌套:

    if (!invalid) {
        if (validData) {
            // 处理逻辑
        }
    }

    ✅ 使用 continue:

    if (invalid) continue;
    if (!validData) continue;
    // 处理逻辑(顶格写,更清晰)

执行流程图


重点总结

要点

说明

作用范围

仅影响当前所在循环(嵌套时不影响外层)

for 循环

continue 后自动执行更新表达式

while/do-while

必须手动确保循环变量更新,防止死循环

与 break 区别

continue 跳过本次,break 终止全部

典型用途

跳过无效 / 特殊值、简化条件判断逻辑


思考题

  1. 编写一个程序,使用 continue 打印 1 到 20 中所有不是 5 的倍数的数字。

  2. 在嵌套循环中,能否用带标签的 continue 跳出到外层循环的下一次迭代?尝试查阅资料并验证。

  3. 为什么在 for 循环中使用 continue 通常比在 while 中更安全?从变量更新角度解释。