Что такое ключевое слово "continue" и как оно работает на Java?
Я впервые увидел это ключевое слово, и мне было интересно, может ли кто-нибудь объяснить мне, что оно делает.
- что такое
continue
ключевое слово? - как это работает?
- когда он используется?
10 ответов
A continue
оператор без метки будет повторно выполняться из условия The innermost while
или 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
в имитировать ограниченную форму 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
вы перемещаетесь в состояние внизу после continue
, а не в начале цикла.
вот почему много людей не удается правильно ответить, что будет генерировать следующий код.
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 означает перейти к концу текущего цикла, значит: если компилятор увидит продолжение в цикле, он перейдет к следующей итерации
пример: это код для печати нечетных чисел от 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
петли. The continue
оператор служит визуальным индикатором того, что цикл не нуждается в тело.
это немного более очевидно, чем эквивалент:
while (...)
{ }
и определенно лучший (и более безопасный) стиль кодирования, чем использование пустого оператора, такого как:
while (...)
;
в основном в java, continue-это оператор. Поэтому оператор continue обычно используется с циклами, чтобы пропустить текущую итерацию.
как и когда он используется в Java, см. ссылку ниже. Он получил объяснение на примере.
http://www.flowerbrackets.com/continue-java-example/
надеюсь, что это помогает !!