Java程序员面试笔试宝典(第2版)
上QQ阅读APP看书,第一时间看更新

1.9 break、continue以及return的区别

break:直接强行跳出当前循环,不再执行剩余部分。当循环中遇到break语句时,忽略循环体中任何其他语句和循环条件测试,程序控制在循环后面语句重新开始。所以,当多层循环嵌套,break语句出现在嵌套循环中的内层循环,它将仅仅只是终止了内层循环的执行,而不影响外层循环的执行。

continue:停止当次循环,回到循环起始处,进入下一次循环操作。continue语句之后的语句将不再执行,用于跳过循环体中的一部分语句,也就是不执行这部分语句,而不是跳出整个循环执行下一条语句,这就是continue与break的主要区别。简单地说,continue只是中断一次循环的执行而已。

return:return语句是一个跳转语句,用来表示从一个方法返回(返回一个值或其他复杂类型),可以使程序控制返回到调用它方法的地方。当执行main方法时,return语句可以使程序执行返回到Java运行系统。

由于break只能跳出当前的循环,那么如何才能实现跳出多重循环呢?可以在多重循环的外面定义一个标识,然后在循环体里使用带有标识的break语句即可跳出多重循环。例如:

程序运行结果为:

上例中,当内部循环j=2时,程序跳出双重循环,执行System.out.println("break")语句。

引申:Java语言中是否存在goto关键字?

虽然goto作为Java的保留字,但目前没有在Java中使用。在C/C++中,goto常被用作跳出多重循环,在Java语言中,可以使用break和continue来达到同样的效果。那么既然goto没有在Java语言中使用,为什么还要作为保留字呢?其中一个可能的原因就是这个关键字有可能会在将来被使用。如果现在不把goto作为保留字,开发人员就有可能用goto作为变量名来使用。一旦Java支持goto关键字了,这会导致以前的程序无法正常运行。因此把goto作为保留字是非常有必要的。

这里需要注意的是,在Java语言中,虽然没有goto语句,但是却能使用标识符加冒号(:)的形式定义标签,如“mylabel:”,其目的主要是在多重循环中方便使用break和continue。