有没有人在Java中看过下面的代码?
public void methodName(){
search:
for(Type[] t : Type[] to){
do something...
}
}有人能告诉我在这种情况下"search:“的用法文档吗?搜索“搜索:”并不是很有成效。
谢谢
发布于 2012-04-26 04:31:58
这是个标签。来自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,所以它打破了外部循环。
发布于 2012-04-26 04:32:45
这是一个带标签的循环的示例。
它允许您对目标循环执行break或continue操作,而不是当前循环。
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
发布于 2012-04-26 04:32:06
它是在JLS:http://docs.oracle.com/javase/specs/jls/se5.0/html/statements.html#78994中定义的Java标签
https://stackoverflow.com/questions/10323257
复制相似问题