#java
у меня вопрос, что за слово outer и откуда оно взялось: public class Test { public static void main(String args[]) { outer: for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (j > i) { System.out.println(""); continue outer; } System.out.print(" " + (i * j)); } } } }
Ответы
Ответ 1
Коротко: outer - это метка (label). И continue/break умеют на нее переходить. Зачем это нужно? дело в том, что в java как бы нет goto(на самом деле такое слово есть, но использовать его нельзя). Но goto, не смотря на то, что Дейкстра его заклеймил, иногда очень удобно. И в Java пошли на компромисс - расширили break/continue. Только логику чуточку поменяли - в большинстве языков break/continue переходят только на один уровень вложенности циклов, а в java - на сколько нужно. Ссылка на офф документацию. Там оно называется labeled and unlabeled break/coninue.Ответ 2
Перед циклом for у вас стоит метка outer: (3-я строка в вашем коде). Оператор continue outer; делает переход на эту метку, то есть возвращает в начало первого цикла.Ответ 3
outer (Внешний) - это название метки, которое может быть любым. Просто, тот кто писал эту метку хотел внести смысл в название, поэтому так и назвал. А смысл состоит в том, что эта метка означает место куда передается управление программы когда выполняется оператор continue. В данном случае она тут ненужная, как и оператор continue, кототорые можно удалить. Вместо этого можно использовать break без метки. public static void main(String args[]) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (j > i) { System.out.println(""); break; } System.out.print(" " + (i * j)); } } }
Комментариев нет:
Отправить комментарий