我第一次看到这个关键字,我想知道是否有人可以向我解释它的作用.
什么是continue
关键字?
它是如何工作的?
什么时候使用?
Dustin.. 503
continue
有点像goto
.你熟悉break
吗?相比之下,更容易思考它们:
break
终止循环(跳转到它下面的代码).
continue
在当前迭代的循环中终止代码处理的其余部分,但继续循环.
Diomidis Spi.. 410
continue
没有标签的语句将从最内层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;
Gant.. 99
我们来看一个例子:
int sum = 0;
for(int i = 1; i <= 100 ; i++){
if(i % 2 == 0)
continue;
sum += i;
}
这将得到从1到100的奇数之和.
continue
有点像goto
.你熟悉break
吗?相比之下,更容易思考它们:
break
终止循环(跳转到它下面的代码).
continue
在当前迭代的循环中终止代码处理的其余部分,但继续循环.
continue
没有标签的语句将从最内层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;
我们来看一个例子:
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
or for
循环声明没有立即显示.return
在方法的中间也是如此,但原因略有不同.
正如其他人已经说过的那样,continue
移动到循环的下一次迭代,同时break
移出封闭循环.
这些可以是维护时间炸弹,因为在continue
/ break
和循环之间没有直接链接它继续/打破除了上下文之外; 添加一个内循环或将循环的"内脏"移动到一个单独的方法中,你有continue
/ break
失败的隐藏效果.
恕我直言,最好使用它们作为最后的手段,然后确保它们的使用在循环的开始或结束时紧密组合在一起,以便下一个开发人员可以在一个屏幕中看到循环的"边界" .
continue
,break
和return
(除了方法结束时的One True Return)都属于"隐藏GOTO"的一般类别.它们将循环和函数控制置于意外的位置,最终导致错误.
Java中的“继续”表示转到当前循环的末尾,表示:如果编译器看到循环中的继续,它将进入下一个迭代
示例:这是用于打印从1到10的奇数的代码
只要看到继续进入下一个迭代,编译器将忽略打印代码
for (int i = 0; i < 10; i++) { if (i%2 == 0) continue; System.out.println(i+""); }