核心概念:continue 是什么?
continue 是一个控制跳转语句,它的作用是立即终止当前正在进行的本次循环迭代,并直接跳转到循环的判断条件部分,准备开始下一次迭代。

continue 会跳过 continue 语句之后的所有代码,直接进入下一次循环。
continue 在 if 语句中的角色
continue 本身不能单独存在,它几乎总是和 if 语句一起使用。if 语句扮演了“守门员”或“条件判断”的角色。
工作流程如下:
- 循环开始执行。
- 遇到
if语句,判断条件是否为true。 if条件为false,continue语句被忽略,程序会像正常一样执行if代码块之后的所有代码。if条件为true,程序会执行continue语句。continue被执行后,if代码块中continue之后的代码(如果有的话)将被跳过。- 程序立即跳出当前整个迭代,直接跳转到循环的开头(
for循环是更新变量部分,while循环是判断条件部分)。
一个形象的比喻:

想象你在排队买东西(循环)。
- 你走到柜台前。
- 收银员(
if语句)检查你的东西(条件)。 - 如果你的东西不符合规定(
if条件为true),收银员说:“先生/女士,这个不行,请重新排队。”(continue语句)。 - 你会立刻停止当前的动作,走到队伍的末尾,准备下一次轮到你(进入下一次迭代)。
- 在你走到队伍末尾的过程中,你不会再和收银员进行任何其他互动(跳过了
continue之后的代码)。
代码示例
我们来看几个不同循环中 if + continue 的具体例子。
示例 1:for 循环
这是最常见的用法。continue 会跳转到 for 循环的 i++ 部分。
public class ContinueExample {
public static void main(String[] args) {
System.out.println("--- 使用 continue 跳过偶数 ---");
for (int i = 1; i <= 10; i++) {
// i 是偶数 (i % 2 == 0),就跳过本次循环的剩余部分
if (i % 2 == 0) {
System.out.println("发现偶数 " + i + ",跳过打印。");
continue; // 跳转到 i++,然后判断 i <= 10
}
// 只有当 if 条件为 false 时(即 i 是奇数),这里的代码才会被执行
System.out.println("打印奇数: " + i);
}
}
}
输出结果:

--- 使用 continue 跳过偶数 ---
打印奇数: 1
发现偶数 2,跳过打印。
打印奇数: 3
发现偶数 4,跳过打印。
打印奇数: 5
发现偶数 6,跳过打印。
打印奇数: 7
发现偶数 8,跳过打印。
打印奇数: 9
发现偶数 10,跳过打印。
流程分析:
- 当
i为 1, 3, 5, 7, 9 时,i % 2 == 0为false,continue不执行,System.out.println(...)正常执行。 - 当
i为 2, 4, 6, 8, 10 时,i % 2 == 0为true,continue被执行,程序立即跳到i++,然后判断i <= 10是否成立,从而进入下一次循环。System.out.println("打印奇数...")这行代码被完全跳过了。
示例 2:while 循环
在 while 循环中,continue 会跳转到 while 的条件判断部分。
public class ContinueWhileExample {
public static void main(String[] args) {
int count = 0;
System.out.println("\n--- 使用 continue 在 while 循环中 ---");
while (count < 5) {
count++; // 必须先增加计数器,否则容易造成死循环
// count 等于 3,就跳过本次循环
if (count == 3) {
System.out.println("count 是 3,跳过本次迭代。");
continue; // 跳转到 while (count < 5) 的判断
}
System.out.println("当前 count 的值是: " + count);
}
}
}
输出结果:
--- 使用 continue 在 while 循环中 ---
当前 count 的值是: 1
当前 count 的值是: 2
count 是 3,跳过本次迭代。
当前 count 的值是: 4
当前 count 的值是: 5
流程分析:
count变为 1 和 2 时,if条件不满足,正常打印。count变为 3 时,if条件满足,continue被执行,程序跳过System.out.println(...),直接回到while (count < 5)进行判断。count仍然是 3,但因为count++已经执行,所以不会卡死。count变为 4 和 5 时,if条件不满足,正常打印。
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.print(i + " "); // 输出: 1 2 4 5
}
System.out.println("\n\n--- break 的例子 ---");
for (int i = 1; i <= 5; i++) {
if (i == 3) {
break; // 当 i=3 时,整个循环结束
}
System.out.print(i + " "); // 输出: 1 2
}
}
}
continue 与 return 的区别
return 是方法级别的控制流,而 continue 是循环级别的。
| 特性 | continue |
return |
|---|---|---|
| 作用域 | 只在循环内部有效。 | 在整个方法内部有效。 |
| 行为 | 只影响当前循环。 | 立即结束整个方法的执行,并返回一个值(如果方法有返回值类型)。 |
示例:
public class ContinueVsReturn {
public static void main(String[] args) {
checkNumbers();
}
public static void checkNumbers() {
for (int i = 1; i <= 5; i++) {
System.out.println("处理数字: " + i);
if (i == 3) {
System.out.println("遇到 3,使用 continue...");
continue; // 只跳过本次循环,"循环结束" 仍会被打印
}
System.out.println("循环结束");
}
System.out.println("方法 checkNumbers 执行完毕。");
}
}
输出 (使用 continue):
处理数字: 1
循环结束
处理数字: 2
循环结束
处理数字: 3
遇到 3,使用 continue...
处理数字: 4
循环结束
处理数字: 5
循环结束
方法 checkNumbers 执行完毕。
如果把 continue 换成 return:
// ... if (i == 3) { return; } ...
输出 (使用 return):
处理数字: 1
循环结束
处理数字: 2
循环结束
处理数字: 3
遇到 3,使用 return...
可以看到,return 之后,整个方法立即停止,后面的所有代码(包括循环和 System.out.println)都不会再执行。
最佳实践与注意事项
-
可读性优先:
continue可以让代码更清晰,尤其是在有复杂条件需要跳过大部分逻辑时,但过度使用continue(尤其是在嵌套循环中)可能会让代码难以理解,此时可以考虑重构代码,将逻辑放在if的else分支中。- 可读的方式 (使用 continue):
for (Item item : items) { if (!item.isValid()) { continue; // 跳过无效项 } // 处理有效项的代码... } - 另一种方式 (不使用 continue):
for (Item item : items) { if (item.isValid()) { // 处理有效项的代码... } }两种方式都可以,前者在某些情况下能更突出“跳过无效项”这个逻辑。
- 可读的方式 (使用 continue):
-
注意
while循环中的陷阱:在while循环中,continue的条件使得循环变量没有被更新,continue跳转回的条件判断永远为true,就会导致死循环。// 危险的示例! int x = 0; while (x < 10) { if (x == 5) { continue; // x 永远不会变成 6,导致 x < 10 永远为 true } System.out.println(x); x++; // 这行代码在 x == 5 时永远不会执行 }
| 关键点 | 描述 |
|---|---|
continue 的作用 |
跳过当前循环的剩余部分,直接进入下一次迭代。 |
if 的作用 |
作为 continue 的“触发器”,决定是否执行 continue。 |
for 循环中的 continue |
跳转到 for 循环的“更新表达式”部分(如 i++)。 |
while 循环中的 continue |
跳转到 while 循环的“条件判断”部分。 |
continue vs break |
continue 跳过本次,break 跳出整个循环。 |
continue vs return |
continue 控制循环,return 控制整个方法。 |
希望这个详细的解释能帮助你彻底理解 Java if 中的 continue!
