带标签的 break 可跳出指定外层循环,需在循环前加“标签名:”,内层用“break 标签名;”实现;同一标签可被多个 break/continue 引用,前者退出循环,后者跳至下一次迭代。

Java 中嵌套循环的跳出控制,关键在于明确“想跳出哪一层”以及“跳出后是否还要继续执行后续逻辑”。默认的 break 和 continue 只作用于最近一层循环,跨层控制必须借助额外机制。
用带标签的 break 跳出指定外层循环
这是最直接、语义最清晰的方式,适用于需要立即终止某一层(不一定是顶层)并继续执行该层之后代码的场景。
- 在外层循环前加自定义标签,格式为
标签名:,紧贴循环语句,不能换行 - 在内层满足条件处写
break 标签名;,即可跳出对应标签的循环 - 同一个标签可被多个
break或continue引用,但效果不同:前者退出循环,后者跳到下一次迭代开始
例如:
outer: for (int i = 0; i for (int j = 0; j if (i == 1 && j == 2) break outer;
System.out.println("i=" + i + ", j=" + j);
}
}
立即学习“Java免费学习笔记(深入)”;
执行完 break outer 后,整个外层循环终止,程序继续执行 outer: 循环之后的语句。
用 return 提前结束整个方法
当嵌套循环封装在某个方法中,且跳出后无需执行该方法剩余逻辑时,return 是最简洁的选择。
- 适合“查找即返回”类逻辑,比如遍历二维数组找目标值
- 避免多层
break嵌套,也规避了标签语法可能带来的可读性争议 - 如有资源需释放(如文件流、数据库连接),应确保放在
try-with-resources或finally块中
例如:
public boolean findTarget(int[][] grid, int target) {
for (int i = 0; i for (int j = 0; j if (grid[i][j] == target) return true;
}
}
return false;
}
用布尔标志变量控制外层循环条件
适用于需要在跳出前做清理、记录状态,或兼容某些限制标签使用的旧环境(如部分 Android API 级别)。
- 定义一个
boolean变量(如shouldExit),初始为false - 在外层循环条件中加入
&& !shouldExit,使循环可被主动中断 - 内层触发条件后设为
true,再用break退出当前层
注意:每层循环条件都要加上该判断,否则容易漏掉某层继续执行。
用带标签的 continue 跳过当前外层迭代
当不是要“终止循环”,而是“跳过当前外层循环的一轮”,比如某行数据异常就整行忽略,继续处理下一行。
- 给外层循环加标签(如
rows:),内层用continue rows; - 效果是:跳过外层循环本轮剩余语句,执行其更新表达式(如
i++),再判断是否进入下一轮 - 和
break 标签不同,它不终止循环,只是提前进入下一次迭代


















