Что такое ключевое слово "continue" и как оно работает в Java?
Я впервые увидел это ключевое слово, и мне было интересно, может ли кто-нибудь объяснить мне, что он делает.
- что такое
continue
ключевое слово? - как это работает?
- когда он используется?
10 ответов:
A
continue
оператор без метки будет повторно выполняться из условия The innermostwhile
илиdo
цикл, и из выражения обновления самого внутреннегоfor
петли. Он часто используется для раннего завершения обработки цикла и тем самым избежать глубоко вложенныхif
заявления. В следующем примереcontinue
получит следующую строку, не обрабатывая следующий оператор в цикле.while (getNext(line)) { if (line.isEmpty() || line.isComment()) continue; // More code here }
с этикеткой
continue
будет повторно выполняться из цикла с соответствующей меткой, а не с самой внутренней петлей. Это может быть использовано для выхода из глубоко вложенных циклов или просто для ясности.иногда
continue
также используется в качестве заполнителя для того чтобы сделать пустое тело цикла более ясным.for (count = 0; foo.moreData(); count++) continue;
тот же оператор без метки также существует в C и c++. Эквивалент в Perl
next
.этот тип потока управления не рекомендуется, но если вы так выбираете, вы можете также использовать
continue
to имитировать ограниченную формуgoto
. В следующем примереcontinue
будет повторно выполнить пустойfor (;;)
петли.aLoopName: for (;;) { // ... while (someCondition) // ... if (otherCondition) continue aLoopName;
continue
вроде какgoto
. Вы знакомы сbreak
? Легче думать о них в контрасте:
break
завершает цикл (переходит к коду под ним).
continue
завершает остальную часть обработки кода в цикле для текущей итерации, но продолжает цикл.
рассмотрим пример:
int sum = 0; for(int i = 1; i <= 100 ; i++){ if(i % 2 == 0) continue; sum += i; }
Это позволит получить сумму только нечетных чисел от 1 до 100.
Если вы думаете о теле цикла как о подпрограмме,
continue
вроде какreturn
. То же самое ключевое слово существует в C и служит той же цели. Вот надуманный пример:for(int i=0; i < 10; ++i) { if (i % 2 == 0) { continue; } System.out.println(i); }
это выведет только нечетные числа.
вообще, я вижу
continue
(иbreak
) как предупреждение, что код может используйте некоторый рефакторинг, особенно еслиwhile
илиfor
объявление цикла не сразу видно. То же самое верно и дляreturn
в середине метода, но по несколько иной причине.как уже говорили другие,
continue
переход к следующей итерации цикла, в то время какbreak
выходит из замкнутого цикла.это могут быть техническое обслуживание бомб времени, потому что нет непосредственной связи между
continue
/break
и цикл, который он продолжает / ломает, кроме контекста; добавьте внутренний цикл или переместите "кишки" цикла в отдельный метод, и у вас есть скрытый эффектcontinue
/break
сбой.IMHO, лучше всего использовать их в качестве крайней меры, а затем убедиться, что их использование сгруппировано плотно в начале или конце цикла, чтобы следующий разработчик мог видеть "границы" цикла на одном экране.
continue
,break
иreturn
(кроме одного истинного возврата в конце вашего метода) все попадают в общую категорию "скрытые GOTOs". Они размещают цикл и управление функциями в неожиданных местах, что в конечном итоге приводит к ошибкам.
как уже упоминалось
continue
пропустит обработку кода под ним и до конца цикла. Затем вы перемещаетесь в петли и выполните следующую итерацию, если это условие все еще выполняется (или если есть флаг, к условию обозначенного цикла).необходимо подчеркнуть, что в случае
do - while
вы перемещаетесь в состояние внизу после acontinue
, а не в начале цикла.вот почему много людей не удается правильно ответить, что следующий код будет генерировать.
Random r = new Random(); Set<Integer> aSet= new HashSet<Integer>(); int anInt; do { anInt = r.nextInt(10); if (anInt % 2 == 0) continue; System.out.println(anInt); } while (aSet.add(anInt)); System.out.println(aSet);
*если ваш ответ:
aSet
будет содержать нечетные числа только 100%... ты ошибаешься!
"продолжить" в Java означает перейти к концу текущего цикла, значит: если компилятор видит continue в цикле, то он перейдет к следующей итерации
пример: это код для печати нечетных чисел от 1 до 10
компилятор будет игнорировать код печати всякий раз, когда он видит продолжение перехода к следующей итерации
for (int i = 0; i < 10; i++) { if (i%2 == 0) continue; System.out.println(i+""); }
рассмотрим условие If Else. Оператор continue выполняет то, что есть в условии, и выходит из условия, т. е. переходит к следующей итерации или условию. Но перерыв оставляет петлю. Рассмотрим следующую программу. -
public class ContinueBreak { public static void main(String[] args) { String[] table={"aa","bb","cc","dd"}; for(String ss:table){ if("bb".equals(ss)){ continue; } System.out.println(ss); if("cc".equals(ss)){ break; } } System.out.println("Out of the loop."); } }
он будет печатать: AA cc из цикла.
Если вы используете break вместо continue (после if.), это будет просто печать aa и из цикла.
если условие "bb" равно ss выполняется: Для продолжения: он переходит к следующей итерации, т. е. "cc".равно (ss). Для перерыва: он выходит из цикла и печатает "из цикла. "
Я немного опоздал на вечеринку, но ... ..
стоит отметить, что
continue
полезно для пустых циклов, где вся работа выполняется в условном выражении, управляющем циклом. Например:while ((buffer[i++] = readChar()) >= 0) continue;
в этом случае вся работа чтения символа и добавления его к
buffer
делается в выражении управленияwhile
петли. Элементcontinue
оператор служит визуальным индикатором того, что цикл не нуждается тело.это немного более очевидно, чем эквивалент:
while (...) { }
и определенно лучше (и безопаснее) стиль кодирования, чем с помощью пустого оператора, как:
while (...) ;
в основном на java, continue-это оператор. Поэтому оператор continue обычно используется с циклами, чтобы пропустить текущую итерацию.
как и когда он используется в Java, см. ссылку ниже. Он получил объяснение с примером.
http://www.flowerbrackets.com/continue-java-example/
надеюсь, что это помогает !!