什么是“继续”关键字,它在Java中如何工作?
我第一次看到这个关键字,我想知道是否有人可以向我解释它是什么。
- 什么是
continue
关键字? - 它是如何工作的?
- 什么时候使用?
没有标签的continue
语句将从最里面的while
或do
循环以及最内层for
循环的updateexpression式中重新执行。 它通常用于提前终止循环的处理,从而避免深层嵌套的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中的等价物。
不build议这种types的控制stream程,但是如果你这样select的话,你也可以continue
模拟goto
的有限forms。 在下面的例子中, 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
失败有隐藏的效果。
恕我直言,最好使用它们作为最后手段的措施,然后确保它们的使用在循环的开始或结束时紧密地组合在一起,以便下一个开发人员可以在一个屏幕中看到循环的“边界” 。
continue
, break
和return
(除了方法结束时的一次真正回报),都属于“隐藏的GOTO”的一般类别。 他们将循环和function控制放在意想不到的地方,最终导致错误。
考虑一个If Else条件。 continue语句执行条件中的某些内容,并跳出该条件,即跳转到下一个迭代或条件。 但rest离开循环。 考虑下面的程序。 “
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之后),它只会打印一个循环 。
如果条件“bb”等于ss得到满足:继续:进入下一个迭代,即“cc”.equals(ss)。 对于Break:从循环中出来并打印出“Out of the Loop”。
如前所述, continue
将跳过处理下面的代码,直到循环结束。 然后,如果这个条件仍然成立(或者如果有一个标记,表示循环的条件),则移动到循环的条件并运行下一个迭代。
必须强调的是,在这种情况下do - while
你在循环之后移动到底部的状态时,而不是在循环的开始。
这就是为什么很多人不能正确回答下面的代码会产生什么。
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语句通常用于循环跳过当前的迭代。
有关在java中使用的方式和时间,请参阅下面的链接。 用实例进行了解释。
http://www.flowerbrackets.com/continue-java-example/
希望它有帮助!