什么是“继续”关键字,它在Java中如何工作?

我第一次看到这个关键字,我想知道是否有人可以向我解释它是什么。

  • 什么是continue关键字?
  • 它是如何工作的?
  • 什么时候使用?

没有标签的continue语句将从最里面的whiledo循环以及最内层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 )是代码可能使用一些重构的警告,特别是如果whilefor循环声明不是立即可见的话。 在方法中间return也是如此,但是原因稍有不同。

正如其他人已经说过, continue移动到循环的下一个迭代,而break移出封闭的循环。

这些可以是维护时间炸弹,因为在continue / break和循环之间没有直接的联系,它正在继续/打破而不是上下文; 添加一个内部循环或将循环的“胆量”移动到一个单独的方法中,并且对continue / break失败有隐藏的效果。

恕我直言,最好使用它们作为最后手段的措施,然后确保它们的使用在循环的开始或结束时紧密地组合在一起,以便下一个开发人员可以在一个屏幕中看到循环的“边界” 。

continuebreakreturn (除了方法结束时的一次真正回报),都属于“隐藏的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/

希望它有帮助!