Этот код просто заставил меня на несколько минут уставиться на свой экран:
loop:
for (;;) {
// ...
}
( здесь строка 137 )
Я никогда не видел этого раньше и понятия не имел, что в Java есть ключевое слово loop (NetBeans даже не раскрашивает его как ключевое слово), и он прекрасно компилируется с JDK 6.
Какое объяснение?
java
labeled-statements
Эми Б
источник
источник
Как говорили другие плакаты, это ярлык, а не ключевое слово. Использование ярлыков позволяет делать такие вещи, как:
Это позволяет разорвать внешний цикл.
Ссылка на документацию .
источник
На вопрос дан ответ, но в качестве примечания:
Я слышал о вопросах собеседования типа «Почему этот код Java действителен?» (удалил более простой пример; вот более злой, спасибо Тиму Бюту):
Вы все знали бы, что это за код (кроме ужасного)?
Решение: две метки,
url
иhttp
, комментарийwww.myserver.com/myfile.mp3
и вызов метода с параметром, имя которого (url
) совпадает с именем метки. Да, это компилируется (если вы определяете вызов метода и локальную переменную в другом месте).источник
Это не ключевое слово, это ярлык. Это предназначено для использования с
break
иcontinue
ключевыми словами внутри вложенных циклов:источник
inner
ярлык здесь бесполезен,break;
достаточноinner
этикетку за ясность.Это не ключевое слово; это ярлык .
Это позволяет вам идти помеченным
break
и помеченнымcontinue
.источник
Это действительно ответ на комментарий seanizer к ответу org.life.java, но я хотел вставить некоторый код, чтобы я не мог использовать функцию комментариев.
Хотя я очень редко нахожу использование для «разрыва ярлыка», иногда это случается. Самый распространенный случай - это когда я ищу что-то, что находится в структуре, требующей для поиска вложенного цикла, например:
Обычно в таких случаях я помещаю все это в подпрограмму, чтобы при попадании я мог вернуть найденный объект, а если он выпадает в нижней части цикла, я могу вернуть null, чтобы указать, что он не найден, или, возможно, выбросить исключение. Но иногда это бывает полезно.
Откровенно говоря, я думаю, что изобретатели Java включили эту функцию, потому что между этим и обработкой исключений они устранили последние два законных использования GOTO.
Очень позднее приложение:
Однажды я увидел отличную строчку кода. Программист написал:
На самом деле он сказал не example.com, а веб-сайт нашей компании.
Создается впечатление, что в коде есть URL. Он успешно компилируется, как будто что-то делает. Но ... что он делает?
На самом деле ничего не делает. «http:» - это ярлык, на который он никогда не ссылается. Затем "//" делает оставшуюся часть строки комментарием.
источник
Это метка точки останова, которая позволяет вам выйти из указанного цикла, а не просто самого внутреннего цикла, в котором вы оказались.
Он используется в строке 148 .
источник
Вы могли бы написать что угодно, как это ярлык ... У вас есть пример здесь
источник
Это ярлык, хотя посмотрите на следующий пример:
Когда
b>10
поток выполнения переходит во внешний цикл.источник
Это метка, и метко в Java можно использовать с
break
иcontinue
ключевыми словами для дополнительного контроля над петлями.Здесь это объясняется довольно хорошо:
Думая на Java, сломай и продолжай
источник
Это не ключевое слово, а ярлык . Если внутри
for
цикла вы пишетеbreak loop;
, и вы выходите из этого цикла.источник
Это ярлык. Обычно метка, используемая в Java для передачи потока управления в желаемое место, в то время как все ключевые слова, такие как continue и break, имеют указанный выбор местоположения.
источник