在Java中如何利用break | | continue实现类似goto的功能
如果你学了C或者C++中的流程控制部分,你应该知道有一个goto语句,可以让你跳转到指定的语句,但是基本上所有的资料和老师都会教导你不要轻易使用goto,更有甚者直接告诉你不要用。
因为标签和goto的使用使得程序难以分析,随着使用其数量的增长,容易产生错误,而且大多数使用goto的地方是可以其他语句替代的。
但是不可否认的是,在极少数的一些情况,goto还是最佳的流程控制手段,譬如:跳出多层嵌套循环。
在Java语言中,goto作为关键字被保留了下来,但是并不允许使用相关的语句。
对于goto在多层循环的使用场景,Java给出了替代方案!
首先虽然Java中不让使用goto语句,但是标签依旧可以使用,那什么是标签呢?
标签就是后面带着冒号的标识符。
虽然Java中可以使用标签,但是Java中的标签唯一使用的地方就是在迭代循环语句之前。
然后,如果你还记得的话,应该还记得break和continue这两个流程控制语句。接下来我们就要借助这两个。
- 语句一:利用break语句跳出了循环二,但是没有跳出循环一,循环继续。
- 语句二:利用continue语句本次循环结束,进入下一次循环。
- 语句三:执行点来到标签label1处,但是并不会重新进入循环体,也就是说该双层嵌套循环完全中止了!
- 语句四:执行点来到标签label1处,重新进入循环体,也就是说重新开始该双层嵌套循环。
代码举例:
最后总结一下:
-
一般的continue会退回到最内层循环的开头,继续执行代码。
-
带标签的continue会到达标签的位置,重新进入标签之后的那个循环。
-
一般的break会中断并且跳出当前最内层的循环。
-
带标签的break会中断并且跳出标签所指整个循环。
这个使用方式同样适用于while循环!