在Java中如何利用break | | continue实现类似goto的功能

如果你学了C或者C++中的流程控制部分,你应该知道有一个goto语句,可以让你跳转到指定的语句,但是基本上所有的资料和老师都会教导你不要轻易使用goto,更有甚者直接告诉你不要用。

因为标签和goto的使用使得程序难以分析,随着使用其数量的增长,容易产生错误,而且大多数使用goto的地方是可以其他语句替代的。

但是不可否认的是,在极少数的一些情况,goto还是最佳的流程控制手段,譬如:跳出多层嵌套循环。

在Java中如何利用break | | continue实现类似goto的功能

在Java语言中,goto作为关键字被保留了下来,但是并不允许使用相关的语句。

对于goto在多层循环的使用场景,Java给出了替代方案!

 

首先虽然Java中不让使用goto语句,但是标签依旧可以使用,那什么是标签呢?

标签就是后面带着冒号的标识符。

在Java中如何利用break | | continue实现类似goto的功能

虽然Java中可以使用标签,但是Java中的标签唯一使用的地方就是在迭代循环语句之前。

在Java中如何利用break | | continue实现类似goto的功能

 

 

然后,如果你还记得的话,应该还记得break和continue这两个流程控制语句。接下来我们就要借助这两个。

在Java中如何利用break | | continue实现类似goto的功能

  • 语句一:利用break语句跳出了循环二,但是没有跳出循环一,循环继续。
  • 语句二:利用continue语句本次循环结束,进入下一次循环。
  • 语句三:执行点来到标签label1处,但是并不会重新进入循环体,也就是说该双层嵌套循环完全中止了!
  • 语句四:执行点来到标签label1处,重新进入循环体,也就是说重新开始该双层嵌套循环。

代码举例:

在Java中如何利用break | | continue实现类似goto的功能

 

最后总结一下:

  • 一般的continue会退回到最内层循环的开头,继续执行代码。

  • 带标签的continue会到达标签的位置,重新进入标签之后的那个循环。

  • 一般的break会中断并且跳出当前最内层的循环。

  • 带标签的break会中断并且跳出标签所指整个循环。

这个使用方式同样适用于while循环!