当前位置: 首页 / 技术干货 / 正文
foreach循环介绍

2022-12-15

循环 foreach strs 元素

  foreach循环介绍

  虽然Iterator可以用来遍历集合中的元素,但写法上比较繁琐,为了简化书写,从JDK5开始,提供了foreach循环。foreach循环是一种更加简洁的for循环,也称增强for循环。foreach循环用于遍历数组或集合中的元素,具体语法格式如下:  

Java
for(容器中元素类型 临时变量 :容器变量) {
        执行语句
}

  从上面的格式可以看出,与for循环相比,foreach循环不需要获得容器的长度,也不需要根据索引访问容器中的元素,但它会自动遍历容器中的每个元素。接下来通过一个案例演示foreach循环的用法。  

Java
import java.util.ArrayList;

public class Example05 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList(); // 创建ArrayList集合
        list.add("aaa"); // 向ArrayList集合中添加字符串元素
        list.add("bbb");
        list.add("ccc");
        for (Object obj : list) { // 使用foreach循环遍历ArrayList对象
            System.out.println(obj); // 取出并打印ArrayList集合中的元素
        }
    }
}

  可以看出,foreach循环在遍历集合时语法非常简洁,没有循环条件,也没有迭代语句,所有这些工作都交给虚拟机去执行了。foreach循环的次数是由容器中元素的个数决定的,每次循环时,foreach中都通过变量将当前循环的元素记住,从而将集合中的元素分别打印出来。

  foreach循环的局限性

  foreach循环虽然书写起来很简洁,但在使用时也存在一定的局限性。当使用foreach循环遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改。接下来以一个String类型的数组为例演示foreach循环的缺陷。  

Java
public class Example06 {
    public static void main(String[] args) {
        String[] strs = {"aaa", "bbb", "ccc"};
        // foreach循环遍历数组
        for (String str : strs) {
            str = "ddd";
        }
        System.out.println("foreach循环修改后的数组: " + strs[0] + "," + strs[1] + ","+ strs[2]);
        // for循环遍历数组
        for (int i = 0; i < strs.length; i++) {
            strs[i] = "ddd";
        }
        System.out.println("普通for循环修改后的数组: " + strs[0] + "," + strs[1] + ","+ strs[2]);
    }
}

  案例中分别使用foreach循环和普通for循环去修改数组中的元素。从运行结果可以看出,foreach循环并不能修改数组中元素的值,原因是str="ddd"只是临时变量,str指向了一个新的字符串,这与数组中的元素没有一点关系。而在普通for循环中,是可以通过索引的方式来引用数组中的元素并对其值进行修改的。

分享: 更多

上一篇:Iterator接口介绍

下一篇:Set接口简介

好程序员公众号

  • · 剖析行业发展趋势
  • · 汇聚企业项目源码

好程序员开班动态

More+
  • HTML5大前端 <高端班>

    开班时间:2021-04-12(深圳)

    开班盛况

    开班时间:2021-05-17(北京)

    开班盛况
  • 大数据+人工智能 <高端班>

    开班时间:2021-03-22(杭州)

    开班盛况

    开班时间:2021-04-26(北京)

    开班盛况
  • JavaEE分布式开发 <高端班>

    开班时间:2021-05-10(北京)

    开班盛况

    开班时间:2021-02-22(北京)

    开班盛况
  • Python人工智能+数据分析 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2020-09-21(上海)

    开班盛况
  • 云计算开发 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2019-07-22(北京)

    开班盛况
IT培训IT培训
在线咨询
IT培训IT培训
试听
IT培训IT培训
入学教程
IT培训IT培训
立即报名
IT培训

Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号