Donald Kunth 在一篇名为《Structured Programming with goto statements》的著名文章中指出:无限制地使用goto语句确实很容易导致错误,但在有些情况下,偶尔使用goto跳出循环还是有益处的。Java设计者同意这种看法,甚至在Java语句中增加了一条新的语句: 带标签的break,以此来支持这种程序设计风格。
那么我们怎么使用带标签的break语句呐?
带标签的break语句通常用于多层循环嵌套中,在某一个循环前面加一个标签,如outer:,在需要退出循环的时候就可以直接用break+标签;
跳出多层循环到标签处,并且不会再次进入到刚才的循环中。
那么我们什么时候要用到带标签的break语句呐?
当我们想要跳出多层循环时使用带标签的break语句。
例如:
package jiaqi;
public class Test {
public static void main(String[] args) {
outer: // 标签
for (int i = 1; i < 3; i++) {
for (int j = 1; j < 3; j++) {
for (int t = 1; t < 3; t++) {
System.out.println("假期加油" + t);
break outer; // 用法:break+标签
}
}
}
System.out.println("输出结束");
}
}
输出:
假期加油1
输出结束
那么带标签的break语句与普通的break语句有什么不同呐?
普通的break语句只能跳出单层循环,而带标签的break语句可以跳出多层循环(即跳回到标签所在的位置,但不会再次进入循环)
例如:
package jiaqi;
public class Test {
public static void main(String[] args) {
for (int i = 1; i < 3; i++) {
for (int j = 1; j < 3; j++) {
for (int t = 1; t < 3; t++) {
System.out.println("假期加油" + t);
break;
}
}
}
System.out.println("输出结束");
}
}
输出:
假期加油1
假期加油1
假期加油1
假期加油1
输出结束