在C/C++等语言中,使用goto可以实现程序的跳转,从某些方面来说提供了一定的方便性,例如在多重嵌套的循环中,可以直接从内层循环中挑出外层循环。然而,这种跳转却没有任何限制,可以随意进行,从而打破了正常的程序流程。如果程序中多处使用goto,不仅降低程序的可读性,也会对程序的维护与更新造成影响。
因此,Java取消了goto的使用,取而代之的是使用循环标签continue/break + 标签。但是,为了避免程序员自行使用goto带来同样的混乱性(例如将方法或变量的名称声明为goto),Java仍将goto定义为一个关键字,用来限制程序员将goto作为一个标识符来使用,由于是一个从不使用的关键字,故也成为“保留字”。
循环标签使用如下:
public static void main(String args[]) {
int number = 0;
outer: //专属标签对应下面的for,标签名+冒号
for (int i = 0; i < 3; ++i) {
System.out.println("a");
inner://专属标签对应下面的for
for (int j = 0; j < 3; ++j) {
System.out.println("b");
number++;
if (number == 4)
break inner;
if (number == 5)
break outer;
}
System.out.println("c");
}
}
当运行到break语句,程序会直接跳出对应的for循环,用在while的情况也一样,continue的用法也类似。
输出结果为:
a
b
b
b
c
a
b
c
a
b