Вопрос-ответ

"loop:" in Java code. What is this, and why does it compile?

"loop:" в коде Java. Что это и почему он компилируется?

Этот код просто заставил меня несколько минут пялиться на экран:

loop:
for (;;) {
// ...
}

(строка 137 здесь)

Я никогда не видел этого раньше, и я понятия не имел, что в Java есть ключевое слово "loop" (NetBeans даже не выделяет его как ключевое слово), и оно отлично компилируется с JDK 6.

Каково объяснение?

Переведено автоматически
Ответ 1

Это не 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;
}
}
}

Документация.

Ответ 2

Как говорилось в других постерах, это метка, а не ключевое слово. Использование меток позволяет вам делать такие вещи, как:

outer: for(;;) {
inner: for(;;) {
break outer;
}
}

Это позволяет прервать внешний цикл.

Ссылка на документацию.

Ответ 3

Ответ на вопрос получен, но в качестве дополнительного примечания:

Я слышал о вопросах в интервью типа "Почему этот Java-код допустим?" (убрал более простой пример; вот более подлый, спасибо Тиму Бюту):

url: http://www.myserver.com/myfile.mp3
downLoad(url);

Знаете ли вы все , что это за код (кроме ужасного)?

Решение: две метки, url и http, комментарий www.myserver.com/myfile.mp3 и вызов метода с параметром, который имеет то же имя (url), что и метка. Да, это компилируется (если вы определяете вызов метода и локальную переменную в другом месте).

Ответ 4

Это не ключевое слово, это метка. Оно предназначено для использования с ключевыми словами break и continue внутри вложенных циклов:

outer:
for(;;){
inner:
for(;;){
if(){
break inner; // ends inner loop
} else {
break outer; // ends outer loop
}
}
}
java