【小家java】剖析for、while、foreach、标签循环语句的控制( break,continue,return )(上)

简介: 【小家java】剖析for、while、foreach、标签循环语句的控制( break,continue,return )(上)

相关阅读

【小家java】java5新特性(简述十大新特性) 重要一跃

【小家java】java6新特性(简述十大新特性) 鸡肋升级

【小家java】java7新特性(简述八大新特性) 不温不火

【小家java】java8新特性(简述十大新特性) 饱受赞誉

【小家java】java9新特性(简述十大新特性) 褒贬不一

【小家java】java10新特性(简述十大新特性) 小步迭代

【小家java】java11新特性(简述八大新特性) 首个重磅LTS版本


1、概述


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

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


2、栗子


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

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


public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
        System.out.print(i + ",");
    }
}
输出:
0,1,2,3,4,5,6,7,8,9,


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

public static void main(String[] args) {
   for (int i = 0; i < 10; i++) {
       if (i < 5) {
            continue;
        }
        System.out.print(i + ",");
    }
}
输出:
5,6,7,8,9,
public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
        System.out.print(i + ",");
        if (i < 5) {
            break;
        }
    }
}
输出:
0,
public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
        System.out.print(i + ",");
        if (i < 5) {
            return;
            //return false; //编译报错
            //return true; //编译报错
        }
    }
}
输出:
0,


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


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

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


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


public static void main(String[] args) {
    List<String> lists = new ArrayList<>();
    lists.add("a");
    lists.add("b");
    for (String str : lists) {
        System.out.print(str + ",");
    }
}
输出:
a,b,


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


上面增强for编译过后代码如下:
public static void main(String[] args) {
     List<String> lists = new ArrayList();
     lists.add("a");
     lists.add("b");
     Iterator var2 = lists.iterator();
     while(var2.hasNext()) {
         String str = (String)var2.next();
         System.out.print(str + ",");
     }
 }

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


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


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




相关文章
|
2月前
|
Java 开发者 UED
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
42 3
|
16天前
|
XML JavaScript Java
NekoHTML 是一个基于Java的HTML扫描器和标签补全器
**NekoHTML** 是一个基于Java的HTML扫描器和标签补全器(tag balancer),由J. Andrew Clark开发。它主要用于解析HTML文档,并能够“修正”许多在编写HTML文档过程中常犯的错误,如增补缺失的父元素、自动用结束标签关闭相应的元素,以及处理不匹配的内嵌元素标签等。这使得程序能够以标准的XML接口来访问HTML文档中的信息。 ### NekoHTML的主要特点包括: 1. **错误修正**:能够自动修正HTML中的常见错误,如未闭合的标签等。 2. **DOM树生成**:将HTML源代码转化为DOM(Document Object Model)结构,便
|
2月前
|
存储 Java 索引
Java中foreach遍历数组如何拿到想要的值
总结来说,通过foreach循环遍历数组并获取所需的值是一种简单且代码清晰的操作,特别适用于只需访问集合或数组中的每个元素且不需要元素索引或修改集合的场景。在实际编程中,根据场景需求合理选择循环类型,可大大提高代码的可读性与效率。
108 4
|
3月前
|
Java
java中return,break以及continue的用法
java中return,break以及continue的用法
36 10
|
4月前
|
Java
解密 Java ForEach 提前终止问题
解密 Java ForEach 提前终止问题
21 0
|
4月前
|
Java Python
【学习记录 time:】Java8 Lambda 表达式中的 forEach 如何提前终止?
【学习记录 time:】Java8 Lambda 表达式中的 forEach 如何提前终止?
23 0
|
Java
Java中的return作用
Java中的return作用
97 0
Java中的return作用
|
Java
Java中Return的作用
其实Java提供return,是为了保持调用者与被调用者进行通信的关键。比如某个对象调用了一个方法,他需要根据这个方法不同的返回值进行不同的业务处理。如果没有return机制的话,那就只能进行单一的业务处理了,不存在多种情况了。返回值的意义就是保持方法的调用者与被调用者进行通信的关键,这和java中异常抛出的机制是一样的。下面跟你简单说说return的两种用法吧 retu
1483 0
|
12天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
32 2
|
1天前
|
Java 关系型数据库 MySQL
如何用java的虚拟线程连接数据库
本文介绍了如何使用Java虚拟线程连接数据库,包括设置JDK版本、创建虚拟线程的方法和使用虚拟线程连接MySQL数据库的示例代码。
15 6
如何用java的虚拟线程连接数据库