我在Java教科书中读到,任何语句都可以加上标签,并且可以与break一起使用。但是当我尝试这段代码的时候,我得到了错误未定义的标签。( stackoverflow的人在将这个问题标记为重复之前等待,我已经检查了这些问题,但这些问题都不能解释这个问题)。
public class LabelTest {
public static void main(String[] args) {
first: System.out.println("First statement");
for (int i = 0; i < 2; i++) {
System.out.println("Second statement");
break first;
}
}
}
发布于 2013-08-10 16:13:17
根据JLS 14.7
标记语句标签的作用域是直接包含的语句。
因此,在本例中,标签first
的作用域是标签后面的sysout
语句。更清楚地说,您可以使用大括号定义作用域,并且在这些大括号中可以有效地跳到标签。因此,以下内容是有效的
first: {
System.out.println("First statement");
for (int i = 0; i < 2; i++) {
System.out.println("Second statement");
break first;
}
}
或
first: {
System.out.println("First statement");
break first;
}
second:
for(int i=0;i<2;i++){
System.out.println("Second statement");
break second;
}
https://stackoverflow.com/questions/18159965
复制相似问题