continue用于for循环中跳过当前迭代,需在if内使用以跳过特定i值,仅作用于当前循环;java不支持带标签的continue。

continue 在 for 循环里跳过某个 i 值的写法
直接在循环体中用 if 判断数值,满足条件就 continue,后面语句不执行,立刻进入下一轮迭代。注意它只对当前所在循环生效,不影响外层循环。
- 常见错误:把
continue写在if外面,或误以为它能跳过整个循环块 - 典型场景:遍历数组时跳过
0、-1或某个业务标识值(比如status == 999) - 参数差异:Java 中
continue不支持带标签的“跳到指定循环”(那是continue label,极少用且易读性差)
for (int i = 0; i < 10; i++) {
if (i == 5) continue; // 跳过 i==5 这次
System.out.println(i); // 输出 0 1 2 3 4 6 7 8 9
}
嵌套 for 里 continue 只作用于内层循环
这是最容易混淆的点:continue 默认只跳出**最近一层**的循环。想跳外层,得用带标签的写法,但代价是可读性下降。
- 错误现象:内层
continue后,外层循环变量仍正常递增,你以为跳了两层,其实只跳了内层 - 使用场景:双层遍历查表时,某行数据无效,只想跳过该行内所有列处理,不中断行遍历
- 性能影响:带标签的
continue编译后无额外开销,但维护成本高,团队协作时容易出错
outer: for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (j == 1) continue outer; // 跳到外层下一次 i++
System.out.println(i + "," + j); // 输出 0,0 1,0 2,0
}
}
continue 和 break 混用时的逻辑陷阱
两者行为完全不同:continue 是“这次不干了,继续下次”,break 是“全干完了,立刻出去”。混用时,尤其在多个 if 嵌套里,很容易漏掉本该跳过的分支。
- 常见错误:在同一个循环里,先
continue跳过一部分逻辑,后面又用break终止整个循环,但条件判断顺序没理清,导致提前退出 - 使用场景:解析日志行时,遇到空行
continue,遇到结束标记break - 建议:把
continue条件放在最前面,避免后续逻辑干扰判断;break条件单独拎出来,别和continue共享else
for (String line : lines) {
if (line.trim().isEmpty()) continue; // 先过滤空行
if ("END".equals(line)) break; // 再判断终止
process(line);
}
while 循环中用 continue 容易漏掉变量更新
while 没有自动递增机制,continue 之后如果忘了手动更新循环变量,就会死循环。
立即学习“Java免费学习笔记(深入)”;
- 错误现象:控制台狂刷、CPU 占满、程序卡住——八成是
continue后没动i++或类似操作 - 使用场景:读取流、轮询状态、手动控制迭代步长(比如每次跳 2 位)
- 兼容性:所有 Java 版本行为一致,但 JDK 14+ 的模式匹配 switch 里慎用
continue,容易和yield混淆
int i = 0;
while (i < 10) {
if (i == 3) {
i++; // 必须放在这里!否则死循环
continue;
}
System.out.println(i);
i++;
}
实际写的时候,最常被忽略的是 while 里 continue 前后变量状态是否一致,以及嵌套循环中默认作用域的边界。这些地方不出错则已,一出就是线上难复现的逻辑跳变。









