概述
Java保留了goto关键字,但是不提供使用。
带标签的break和continue可以实现部分goto效果。
比如:跳出多层循环、跳出指定语句块....
原理
mark: 标签,在语句块上方进行标记
break mark; 使程序直接跳转到mark标记的语句块结束处。
continue mark; 使程序跳转到指定循环体的下一次循环。
案例
1、break 跳出多层循环
public void testGoto() {
mark:
for (int i = 0; i < 10; i++) {
System.out.println("外层循环开始,第"+i+"次");
for (int j = 0; j < 10; j++) {
System.out.println("-中层循环开始,第"+j+"次");
for (int k = 0; k < 10; k++) {
System.out.println("--内层循环开始,第"+k+"次");
if(k==5){
break mark;
}
}
}
}
System.out.println("程序运行结束!");
}
2、break 跳出指定语句块
public void testBreak() {
mark:
{
System.out.println("业务操作1");
System.out.println("业务操作2");
System.out.println("业务操作3");
if(1>0){
break mark;
}
System.out.println("业务操作4");
System.out.println("业务操作5");
}
System.out.println("程序运行结束!");
}
3、continue跳到指定的下一次循环中
public void testGoto() {
mark:
for (int i = 0; i < 10; i++) {
System.out.println("外层循环开始,第"+i+"次");
for (int j = 0; j < 10; j++) {
System.out.println("-中层循环开始,第"+j+"次");
for (int k = 0; k < 10; k++) {
System.out.println("--内层循环开始,第"+k+"次");
if(k==5){
continue mark;
}
}
}
}
System.out.println("程序运行结束!");
}