这段代码让我盯着屏幕看了几分钟:
loop:
for (;;) {
// ...
}
我以前从未见过这种情况,我也不知道Java有一个“循环”关键字(NetBeans甚至不像关键字那样给它着色),而且它在JDK6上编译得很好。
解释是什么?
发布于 2010-09-29 21:05:16
它不是keyword
,它是label
。
用法:
label1:
for (; ; ) {
label2:
for (; ; ) {
if (condition1) {
// break outer loop
break label1;
}
if (condition2) {
// break inner loop
break label2;
}
if (condition3) {
// break inner loop
break;
}
}
}
发布于 2010-09-29 21:07:29
正如其他发帖者所说,它是一个标签,而不是一个关键词。通过使用标签,您可以执行以下操作:
outer: for(;;) {
inner: for(;;) {
break outer;
}
}
这允许中断外部循环。
发布于 2010-09-29 21:41:19
问题已经回答了,但作为附注:
我听说过一些面试问题,比如“为什么这段Java代码有效?”(去掉更简单的例子;下面是更糟糕的例子,thx Tim Büthe ):
url: http://www.myserver.com/myfile.mp3
downLoad(url);
你们都知道这段代码是什么吗(除了糟糕)?
解决方案:两个标签,url
和http
,一个注释www.myserver.com/myfile.mp3
和一个带有与标签同名的参数(url
)的方法调用。是的,这是编译的(如果你在其他地方定义了方法调用和局部变量)。
https://stackoverflow.com/questions/3821827
复制相似问题