文章发布地址:https://blog.qiuluo.xin/2019/01/09/%E5%B8%A6%E6%A0%87%E7%AD%BE%E7%9A%84break/
在跳出循环或switch时,经常会用到break语句,然而break只能跳出当前所在的循环。
要想跳出n层循环之外,使用自定义的标记变量太过繁琐且容易出错,还好java提供了带标签的break语句。
java的标签只能定义在语句块的上方,比如while、for循环至上。如下面的lab0
和lab1
的形式定义。可以直接在内层使用break lable
跳出指定的代码块。
lab0:
for (int i = 0; i < 10; i++){
lab1:
for (int j = 0; j < 10; j++){
for (int k = 0; k < 10; k++){
System.out.println(k);
if (k == 5) break lab1;
}
}
}
事实上,标签不止可以定义在循环上,它可以定义在任何代码块上,从而使用break跳转。比如下面的情况都可以使用break lable
进行跳转。
// if也可以使用标签标记。
out:
if (value == 10){
if (flag == true){
break out;
}
System.out.println("一句话 value: "+value);
}
System.out.println("结束 value:"+value);
// 执行后当value等于10时,不会输出`跳出内圈`,而是直接跳出整个代码块结束程序。
sta:
{
System.out.println("外");
{
if (value == 10){
break sta;
}
System.out.println("内");
}
System.out.println("跳出内圈");
}
注意:使用break lable
进行跳转时,只能从内层跳转到外层语句块,而不能从外层调到内层或平行的代码块。
这样就避免了使break
变成goto
语句。
同时,除了有带标签的break
外,java中还有带标签的continue
,可以跳转到指定循环的首部,而不跳转到当前循环的首部。
网友评论