break和continue的作用都是“中断循环”,但是有区别。如同字面意思一样,break(打破)就是纯粹的中断跳出,而continue是要继续,是跳过continue之后的语句继续循环。
在《Java编程思想》(英文原著为《Think in Java》)中有很好解释(P69-P70):
break用于强行退出循环,不执行循环中剩余的语句。
continue停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。
注意对比上面这两句话的不同:break不仅再不执行循环中剩余的语句,同时也要结束循环;continue仅仅不执行循环中剩余的语句,并不跳出循环。
举例来说,看下面这段代码
for(int i=0;i<10;i++)
{
if(i==3) continue;
else if(i==7) break;
cout<<i<<endl;
}
一段简单到不能再简单的代码,运行结果为:
0
1
2
4
5
6
通过观察最后的输出结果就能看出break和continue的区别:程序在i==3时跳过了后面的输出i的语句,转到循环开头进行下一次循环,因此3并未输出但循环继续往下执行。当i==7时触发了break,直接结束了for循环。
其实更简单的方法:把上面的代码复制到编译器中,Debug单步执行,很容易就能看出是如何执行的,动手操作会更清楚。
要说明的是,break和continue只能退出一层循环——当有多层循环嵌套时,有可能要做连续的break,在这个时候有可能就要用到备受争议的goto了。有关于goto,近期会研究一下再写一篇。到时候链接会附在这里。
还是引用《Java编程思想》(英文原著《Think in Java》)中一部分精炼的总结作结(P73):
1.一般的continue会退回最内层循环的开头(顶部),并继续执行;
2.一般的break会中断并跳出当前循环。