带标签的 break 和 continue 可精准控制外层循环;标签写在循环语句前,格式为“标识符:”,须紧邻循环且无换行或中间语句。

Java 中用带标签的 break 和 continue,可以精准跳出或跳过指定外层循环,避免写标志变量或重复逻辑。
标签怎么写?放在循环语句前,后面紧跟冒号
标签名是合法标识符,必须紧贴在循环语句(for、while、do-while)之前,中间不能有换行或语句:
outer: for (int i = 0; i ✅ 正确outer: for (int i = 0; i < 3; i++) { ... }❌ 标签和循环不能换行-
int x = 5; outer: for (...) { ... }❌ 标签必须直接修饰循环语句
用带标签的 break 跳出指定外层循环
执行 break 标签名; 会立即终止对应标签标记的整个循环,程序继续执行该循环之后的代码:
outer: for (int i = 0; i < 3; i++) {
System.out.println("外层 i = " + i);
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
break outer; // 直接跳出外层 for
}
System.out.println(" 内层 j = " + j);
}
}
System.out.println("循环结束");
输出结果为:
立即学习“Java免费学习笔记(深入)”;
外层 i = 0内层 j = 0
内层 j = 1
内层 j = 2
外层 i = 1
内层 j = 0
循环结束
用带标签的 continue 跳过当前外层循环的本轮迭代
continue 标签名; 会让控制权跳转到对应标签循环的下一次迭代开始处(即执行循环的更新语句,再判断条件):
outer: for (int i = 0; i < 3; i++) {
System.out.println("外层开始 i = " + i);
for (int j = 0; j < 3; j++) {
if (j == 1) {
continue outer; // 跳过当前 i 的剩余部分,i++
}
System.out.println(" i=" + i + ", j=" + j);
}
System.out.println("外层结束 i = " + i);
}
效果是:每当内层遇到 j == 1,就直接进入下一轮外层循环,所以 i=0 和 i=1 都不会执行到“外层结束”那行。
注意事项和常见误区
- 标签只对紧邻的循环语句生效,不能跨方法或作用域引用
- 不能用在
if或普通语句块上,只能修饰循环 -
break和continue后的标签名必须已声明且可见(作用域内) - 过度使用标签可能降低可读性,建议嵌套不超过两层;三层以上优先考虑提取成方法


















