continue 是什么?
continue 是一个关键字,在循环(for, while, do-while)中使用,它的作用是立即终止**当前这一次循环的执行,然后直接跳转到循环的条件判断部分**,决定是否开始下一次循环。

continue 会跳过循环体中 continue 语句之后的所有代码,直接进入下一次迭代。
continue 的工作流程
为了更好地理解,我们来看一个标准的 for 循环结构:
for (初始化; 条件判断; 更新) {
// 循环体
// ...
if (某个条件) {
continue; // 当这个条件满足时,执行 continue
}
// 这里的代码在 continue 执行后会被跳过
// ...
}
当 continue 语句被执行时,程序会:
- 跳过
continue语句之后的所有代码。 - 立即执行
for循环的更新部分(i++或类似操作)。 - 重新执行**条件判断**部分(
i < 10或类似操作)。 - 如果条件为
true,则开始下一次循环;如果为false,则整个循环结束。
代码示例
让我们通过几个例子来直观感受 continue 的作用。

示例 1:跳过偶数
这是 continue 最经典的用法:在循环中跳过某些特定的迭代。
public class ContinueExample {
public static void main(String[] args) {
System.out.println("打印 1 到 10 之间的奇数:");
for (int i = 1; i <= 10; i++) {
// i 是偶数 (i % 2 == 0),就跳过本次循环
if (i % 2 == 0) {
continue;
}
// 这行代码只有在 i 是奇数时才会被执行
System.out.println("当前数字: " + i);
}
}
}
执行结果:
打印 1 到 10 之间的奇数:
当前数字: 1
当前数字: 3
当前数字: 5
当前数字: 7
当前数字: 9
流程分析:
- 当
i为 2, 4, 6, 8, 10 时,if (i % 2 == 0)条件为true,continue语句被执行。 - 程序跳过
System.out.println(...),直接执行i++,然后进入下一次循环。 - 当
i为 1, 3, 5, 7, 9 时,if条件为false,continue不会执行,System.out.println(...)正常执行。
示例 2:跳过特定值
假设我们要遍历一个数组,但不想处理值为 "Java" 的元素。

public class ContinueWithArray {
public static void main(String[] args) {
String[] languages = {"Python", "Java", "C++", "JavaScript", "Java", "Go"};
System.out.println("正在学习以下编程语言,但跳过 Java:");
for (int i = 0; i < languages.length; i++) {
if ("Java".equals(languages[i])) {
System.out.println("跳过 " + languages[i]);
continue; // 跳过当前元素,处理下一个
}
System.out.println("正在学习: " + languages[i]);
}
}
}
执行结果:
正在学习以下编程语言,但跳过 Java:
正在学习: Python
跳过 Java
正在学习: C++
正在学习: JavaScript
跳过 Java
正在学习: Go
示例 3:continue 与 if-else 的对比
continue 可以用来简化代码,避免不必要的 else 嵌套。
情况 A:不使用 continue(代码嵌套较深)
for (int i = 1; i <= 5; i++) {
if (i % 2 == 0) {
// 偶数,执行操作A
System.out.println("偶数: " + i);
} else {
// 奇数,执行操作B
System.out.println("奇数: " + i);
}
}
情况 B:使用 continue(代码更扁平化)
for (int i = 1; i <= 5; i++) {
if (i % 2 != 0) {
// 如果是奇数,跳过下面的打印逻辑
continue;
}
// 只有当 i 是偶数时,这里的代码才会执行
System.out.println("偶数: " + i);
}
这两种写法(在简单情况下)可以达到同样的效果,但使用 continue 可以让“正常情况”的代码逻辑更清晰,减少 else 的嵌套,对于更复杂的逻辑,这种优势会更明显。
continue 与 break 的关键区别
初学者经常混淆 continue 和 break,这是一个非常重要的知识点。
| 特性 | continue |
break |
|---|---|---|
| 作用 | 终止当前循环迭代,进入下一次迭代。 | 完全终止整个循环的执行。 |
| 影响范围 | 只影响 continue 所在的那个循环。 |
只影响 break 所在的那个循环。 |
| 跳转到 | 循环的条件判断部分。 | 循环语句之后的第一行代码。 |
代码对比:
public class ContinueVsBreak {
public static void main(String[] args) {
System.out.println("--- 使用 continue ---");
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue; // 跳过 i=3 的这一次
}
System.out.println("continue: i = " + i);
}
System.out.println("\n--- 使用 break ---");
for (int i = 1; i <= 5; i++) {
if (i == 3) {
break; // 当 i=3 时,整个循环结束
}
System.out.println("break: i = " + i);
}
}
}
执行结果:
--- 使用 continue ---
continue: i = 1
continue: i = 2
continue: i = 4
continue: i = 5
--- 使用 break ---
break: i = 1
break: i = 2
带标签的 continue (Labeled continue)
在嵌套循环中,continue 默认只作用于它所在的最近的一层循环,如果你想跳出多层循环,或者指定跳出某个特定的外层循环,可以使用带标签的 continue。
语法:
outerLoop: // 这是一个标签
for (int i = 0; i < 3; i++) {
innerLoop:
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
continue outerLoop; // 跳转到 outerLoop 循环的下一次迭代
}
System.out.println("i = " + i + ", j = " + j);
}
}
执行结果:
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
i = 2, j = 0 // 注意:当 i=1, j=1 时,continue outerLoop 跳过了整个内层循环的剩余部分,直接进入 i=2
i = 2, j = 1
i = 2, j = 2
分析:
当 i=1 且 j=1 时,continue outerLoop 不会继续执行内层循环,而是直接跳转到外层循环 outerLoop 的 i++ 部分,然后进行下一次外层循环。i=1 的整个内层循环都被跳过了。
注意:带标签的
break也有类似的用法,是用来直接跳出被标记的那个循环。
continue用于跳过当前循环的剩余代码,直接进入下一次循环。- 它常用于过滤数据或跳过特定条件的处理。
continue和break的区别是关键:continue是“跳过一次”,break是“彻底退出”。- 在嵌套循环中,可以使用带标签的
continue来控制跳转到指定的外层循环
