Java搜索:“block”

问题描述:

有没有人在Java中见过以下内容?Java搜索:“block”

public void methodName(){ 
    search: 
    for(Type[] t : Type[] to){ 
     do something... 
    } 
} 

有人能指出我的文件上使用“搜索:”在这种情况下?搜索“搜索:”尚未富有成效。

感谢

+0

你在哪里首先看到了吗? – Jon 2012-04-25 20:31:21

+1

这是一个标签;是的,我见过他们。它们相对不常见,但偶尔也很有用。它们也可以与'continue'一起使用,尽管到目前为止所有的答案都只提到'break'。 – 2012-04-25 20:31:43

+0

如果您希望在将来使用标签,这将对您有用:[http://stackoverflow.com/q/205458/1079354](http://stackoverflow.com/q/205458/1079354)。 – Makoto 2012-04-25 20:32:41

这是一个标签。从Java语言规范的§14.7

的陈述可能有标签的前缀......

(枯燥的语法省略,疼痛来标记)

与C和C++,Java编程语言没有goto声明;标识语句标签与break(第14.15节)或continue(第14.16节)语句一起使用,该语句出现在标签语句中的任何位置。

一个地方,你经常可以看到标签是嵌套循环,你可能想摆脱这两个循环的早期:

void foo() { 
    int i, j; 

    outerLoop:      // <== label 
    for (i = 0; i < 100; ++i) { 
     innerLoop:     // <== another label 
     for (j = 0; j < 100; ++j) { 
      if (/*...someCondition...*/) { 
       break outerLoop; // <== use the label 
      } 
     } 
    } 
} 

通常是break在内部循环将打破只在内部循环,但不是外面的那个。但是因为这是一个指示break使用标签,它打破了外层循环。

+0

你们这些人真棒。谢谢。 – user1357147 2012-04-25 20:48:08

+0

@ user1357147:不用担心。因为你是新来的,我会告诉你关于“接受”你的问题的答案:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – 2012-04-25 21:35:07

这是因为在这里JLS定义一个Java标签:http://docs.oracle.com/javase/specs/jls/se5.0/html/statements.html#78994

这是一个标签的循环的例子。

它允许您将breakcontinue作为目标循环而不是当前循环。取自

Outer: 
    for(int intOuter=0; intOuter < intArray.length ; intOuter++) 
    { 
     Inner: 
     for(int intInner=0; intInner < intArray[intOuter].length; intInner++) 
     { 
     if(intArray[intOuter][intInner] == 30) 
     { 
      blnFound = true; 
      break Outer; // this line breaks the outer loop instead of the inner loop. 
     } 

     } 
    } 

例如:http://www.java-examples.com/java-break-statement-label-example

+1

'continue'。 – 2012-04-25 20:33:47