剖析for、while、foreach、标签循环语句的控制

1、概述

java一共提供了3中循环语法:for循环(含增强for循环)、while循环、do…while循环。java8之后提供了基于stream的foreach循环,然后本文就针对于这几个循环,分别介绍一下循环控制语句:break,continue,return对循环体的影响。

特别隆重介绍:foreach循环中,如何停止本次循环和停止所有循环,因为stream的使用非常方便和广泛

2、栗子

最先开始,直接上主菜for循环,后面再介绍稍微简单的例子while循环等。

先来看一个最简单的循环体:

接下来,我们加入一些循环控制语句,看看效果:

从结果中很容易看出,for循环里的continue是结束本次循环继续下一次循环,break是结束当前for所有循环。而return表面上看效果和break一样,确实如此。但是,但是,但是需要注意:return其实是退出方法,它退出的层次是很高的,如果方法体只有一个for循环,效果一样。因此不同的场景,有时候用break,有时候用return,需要注意。

若只想退出for循环,并不想退出方法体,用break;

若退出for循环并且退出方法体,用return;

接下来简单说一下增强for循环(JDK5以后的新特性):

这里不介绍增强for的循环控制,我简要解释一下增强for其实只是个语法糖,大家就理解了。把我编译之后的.class文件的增前for贴出来,大家应该就不需要继续介绍了:

我们发现增强for循环遍历和iterator遍历反编译后的字节码完全一样,所以增强for不用解释了,直接参考for循环和while循环的一些特点就行了

接下来,最重要的主菜登场:foreach循环。

随着java8的普及,基于流式的编程日益普及。它能使得代码的结构越发清晰并且效率也是大大的提升啊,因此我们平时在使用foreach循环的频率就越高了。但是大家或多或少都遇见类似头疼的问题:发现continue和break甚至return语法对foreach循环都不好使了

下面看看示例代码:

通过上述结果,我们可以得出如下结论:

在forEach循环中,continue和break在foreach循环中不允许使用;

在forEach循环中,return的效果等同于普通for循环里面的continue效果(结束本次循环继续下一次循环);

在forEach循环中,return语句不能直接把方法体给返回停止掉

因此,foreach虽然好用效率搞,但也有它的局限性,各位可以根据自己的需求选择遍历方式。

关于while循环和do..while循环的控制,和for循环的一模一样,因此这里不再做讨论了,各位可以自己在本机尝试一下。

最后再聊聊循环嵌套。最常见的就是for循环里面还有for循环,甚至3层或者更多层的循环嵌套。咱们先不讨论现实中允不允许这么去写代码,但从语法角度java是支持的,毕竟有些极其特殊的需求,还真得这么做。

关于循环嵌套,有时候我们希望通过continue、break等语句精准的控制具体的哪一层循环,从而达到我们的目的。java为了满足这种需求,支持了给循环起别名(打标签)的方式(for循环和while循环都可以其别名),基本语法也很简单,可看下面例子,打印9*9乘法表:

若不用for循环别名,需要这么些:

这种写法,可能for (int j = 1; j 3、使用场景

循环的使用场景无处不在,传统每一份逻辑代码。然后此文重点解惑了:foreach循环中的逻辑控制语句怎么使用的问题。希望掌握这个知识点后,遍历尽量的可以使用更加高效的foreach来控制代码结构,当然stream流式编程也是被推荐的。

—-题后语—-

这里写图片描述

更多内容持续更新中,欢迎关注我的博客!

有任何问题,可以跟我留言讨论,欢迎指正,不胜感激。

有任何疑问,亦可扫码向我提我哟~

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180628G1IAJU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券