在java中,continue不允许使用标签

在java中,continue不允许使用标签,java,break,continue,Java,Break,Continue,我在一起使用多个标签时出错。只有第四个声明的标签允许继续 先继续,;给出编译器错误 为什么在下面的代码中只允许使用continue的第四个标签 publicstaticvoidmain(字符串[]args){ 第一:第二:第三:第四: 对于(int i=0;i这是预期的行为。continue只能在循环语句中使用。标签只属于一个语句。只有标签forth属于for-loop语句 让我们看一下: Java语言将标签定义为LabeledStatement,这意味着它们本身就是语句 标记语句由标签、冒号和

我在一起使用多个标签时出错。只有第四个声明的标签允许继续

先继续,;给出编译器错误

为什么在下面的代码中只允许使用continue的第四个标签

publicstaticvoidmain(字符串[]args){
第一:第二:第三:第四:

对于(int i=0;i这是预期的行为。
continue
只能在循环语句中使用。标签只属于一个语句。只有标签
forth
属于
for
-loop语句

让我们看一下:

  • Java语言将标签定义为
    LabeledStatement
    ,这意味着它们本身就是语句
  • 标记语句由标签、冒号和语句组成
  • 因为标记语句是语句,所以可以嵌套它们
  • 那么,在您的示例中,这意味着什么:

  • 带标签的语句
    first:second:third:forth:for(;);
    是一个嵌套的带标签语句,由标签
    first
    和语句(带标签的语句)
    second:third:forth:for(;;);
  • 标签语句
    second:third:forth:for(;;);
    由标签
    second
    和语句
    third:forth:for(;;);
  • 带标签的语句
    third:forth:for(;);
    由标签
    third
    和语句
    forth:for(;);
  • 最后,
    forth:for(;);
    由标签
    forth
    和语句
    for(;;);
  • 因此,只有标签
    forth
    for
    -循环所属的标签语句的标签,并且
    continue
    只能在循环内使用,不能在循环外使用


    一位评论者想知道为什么
    break:first;
    有效,这是因为任何语句都可以中断,不管该语句是否为循环。因此,首先中断
    first
    是合法的,而继续中断则不是。

    请查看我们的文章,帮助您提出一个好问题,从而得到一个好答案。@tony t如何什么是无限循环?当i>=5时,循环仍将退出。continue毫无价值,因为循环将在该点隐式继续。我认为这里的真正问题是,它在语法上对同一语句中的多个标签无效。但我很惊讶错误不在该行。我更惊讶的是我的J2SE 1.8.0_144-b01拒绝
    先继续
    ,但
    先中断
    有效fine@tony一个标签后面可以跟着另一个标签,这是完全合法的。这没用,但它是合法的。@另一个家伙,当你思考Java中的标签到底是什么时,这是有道理的。你可以突破任何语句,但只能在循环语句内继续。开ly
    forth
    是循环语句的标签,所有其他标签都是已标记语句的标签。请参阅我的答案。
    public static void main(String[] args) {
    
        first: second: third: forth:
        for(int i=0;i<5;i++){
            System.out.println("outer start");
            
            for(int j =0;j<5;j++){
                System.out.println("inner");    
            }
            continue first;
        }
        System.out.println("end");
        
    }