Java中的标记语句

Java 标记的块逻辑上类似于gotoC / C ++中的语句。

标签是任何有效的Java标识符,后跟冒号。例如external:,inner:,inner123:,inner_:等。

1. String类中的标记语句

多少次我们被告知“ goto”声明是邪恶的。我本人已经通过我们这个时代许多受人尊敬的作者读到了这种所谓的邪恶。但是,如果您查看String.java的源代码,并阅读公共String toLowerCase(Locale locale)方法的源代码,则将类似于以下内容:

scan :
    for (firstUpper = 0 ; firstUpper < count; ) 
    {
        char c = value[offset+firstUpper];
        if ((c >= Character.MIN_HIGH_SURROGATE) &&
            (c <= Character.MAX_HIGH_SURROGATE)) {
            int supplChar = codePointAt(firstUpper);
            if (supplChar != Character.toLowerCase(supplChar)) {
                break scan;
            }
            firstUpper += Character.charCount(supplChar);
        } else {
            if (c != Character.toLowerCase(c)) {
                break scan;
            }
            firstUpper++;
        }
    }
    return this;
}

这是什么“扫描:”。这是我们今天将要学习的标记块。好吧,他们总是告诉我们不要使用它们,并在JDK分发中最常用的类中使用了它们。🙂

2.带有“ break”和“ continue”关键字的标记语句

在Java中,我们都知道关键字“ break”和“ continue”的存在目的。基本上,语句breakcontinue改变复合语句的正常的控制 Stream 。

2.1。带有和不带有标记语句的break关键字

while (Some condition) 
{
  if ( a specific condition ) 
  		break;        //Default usage
  else
  		normal business goes here..
}

另一种方法是break与带标签的语句一起使用。

hackit:
while (Some condition) 
{
  if ( a specific condition ) 
  		break hackit;       //Usage with label
  else
  		normal business goes here..
}

每当在程序执行过程中,遇到带标签的break语句,该控件都会立即退出封闭的带标签的块。

同样,标记为“继续”将使控制重新开始。就像在普通的break和continue语句中一样,为块赋予了其他名称。

2.2。更多例子

让我们来看更多示例用法:

outer: for (int i = 0; i &lt; 10; i++) {
  inner: for (int j = 10; j > 0; j--) {
    if (i != j) {
      System.out.println(i);
      break outer;
    }else{
      System.out.println("-->>" + i);
      continue inner;
    }
  }
}

//要么

int a = 10;
int b = 12;

block1: {
    if (a &lt; 0) {
      break block1;
    }
    if (b &lt; 0) {
      break block1;
    }
    System.out.println( a + b );
  }
}

3.总结

  • Java没有通用的goto语句。
  • 语句breakcontinueJava中的语句更改了复合语句的常规控制 Stream 。他们可以使用带有冒号的有效Java标识符标签。
  • 带标签的块只能与break和continue语句一起使用。
  • 必须在其范围内调用它们。您不能引用它们标记的块的范围。
  • break语句立即跳到相应复合语句的末尾(或跳出)。
  • Continue语句立即跳转到相应循环的下一个迭代(如果有)。
  • Continue语句不适用于switch语句或block语句,仅适用于循环的for,while和do循环的复合语句。

学习愉快!

saigon has written 1440 articles

Leave a Reply