带标签的 continue 与 break
目录
陈述
带标签的 break
和 continue
一般用于中断控制流程。
break
:不带标签只会退出内部循环,带标签可以退出标签所在的那层循环。break
相比continue
来说,还可以用于跳出语句块!
continue
:不带标签只会继续内部循环的下一次迭代,带标签可以继续标签所在的那层循环的下一次迭代。
验证
public class LoopWithLabel {
public static void forLoop() {
int a = 0;
label: for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if (i == 10) {
break label;
}
a++;
}
}
System.out.println(a); // 理论上应该加了 10 * 100 次
}
public static void whileLoop() {
int a = 0, i = 0;
here: while (i < 100) {
int j = 0;
while (j < 100) {
if (i == 10) {
i++; // 没有它就会死循环,因为 i 一直是 10
continue here;
}
a++;
j++;
}
i++;
}
System.out.println(a); // 理论上应该加了 99 * 100 次
}
public static void main(String[] args) {
forLoop();
whileLoop();
}
}
输出:
1000
9900
思考
由于,break
相比continue
来说,还可以用于跳出语句块,因此:
带标签的 break
可以用来实现 Python 里面的 while-else
语句。
Java允许在语句前加上标签前缀,构成标签(label)语句。其一般格式为:标识符:语句
public static void whileElse() {
boolean[] visited = new boolean[10];
visited[8] = true;
int i = 0;
// 检查,如果全都是 false 就输出检查通过,否则输出检查不通过
label: {
while (i < 10) {
if (visited[i++]) {
System.out.println("检查不通过!");
break label;
}
}
System.out.println("检查通过!");
}
}
输出:
检查不通过!
结论
continue
只能用于循环标签,也就是说这个标签必须标在循环语句上。
break
能作用于任何语句标签,可以是普通语句块、循环等。