我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【Java基础教程】(二十二)Java新特性篇 · 第二讲:foreach循环——概念及优缺点、使用方式及应用场景~

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【Java基础教程】(二十二)Java新特性篇 · 第二讲:foreach循环——概念及优缺点、使用方式及应用场景~

在这里插入图片描述

1️⃣ 概念

Java的 foreach 特性最初出现在JDK 1.5中,也被称为“增强的for循环”。它的设计目的是提供一种简洁、易读的语法,用于遍历集合或数组中的元素,减少了传统 for循环的冗余代码和错误机会。

简单来说,foreach是一种迭代器模式的变体,它允许我们以简单且直观的方式遍历一个集合或数组中的元素,并对每个元素执行相应的操作。foreach语句使用起来更加直观,使代码更易于理解和维护。

下面先来回顾一下传统数组输出的操作形式。

//范例 1: 数组输出package com.xiaoshan.demo;public class TestDemo{public static void main(String args[]){int data[] = new int[]{1,2,3,4,5};for (int x=0; xSystem.out.print(data[x] + "、");}}}

程序执行结果:

1、2、3、4、5、

在传统的数组输出操作中,往往会使用 for 循环来控制索引的下标,从而实现数据的输出操作。但一部分开发者会认为这样的输出方式需要控制索引,过于麻烦,更希望能够简化一些。所以从 JDK 1.5开始对于for 循环有了以下形式:

for (element_type element : collection) {    // 在此处执行针对 element 的操作}

语法中,element_type 是集合或数组中元素的类型, element 表示在每次循环迭代时访问的元素,collection则表示要遍历的数组或集合,在每一次循环时会自动的将数组的内容设置给变量。此时的 for 循环操作在每次循环时会自动将当前数组(或集合)的内容依次取出,这样就可以避免索引问题。

//范例 2: 利用foreach循环实现输出package com.xiaoshan.demo;public class TestDemo {  public static void main(Stringl args[]){int data[] = new int[]{1,2,3,4,5};//定义数组for (int x : data){               //循环次数由数组长度决定//每一次循环实际上都表示数组的角标增长,会取得每一个数组的内容,并且将其设置给x System.out.println( x + "、"); //x  就是每一个数组元素的内容}}}

程序执行结果:

1、2、3、4、5、

2️⃣ 优势和缺点

优点:

  • 语法简洁:foreach提供了一种紧凑的语法,减少了传统for循环的代码量;
  • 避免了索引越界错误:foreach内部使用迭代器实现,能够自动处理集合或数组的边界情况,避免了常见的越界错误;
  • 提高可读性:foreach语法可读性高,更符合自然语言描述集合遍历的过程。

缺点:

  • 无法修改集合/数组长度:由于foreach底层使用迭代器,无法在遍历过程中修改集合或数组的长度;
  • 无法获取当前元素的索引:foreach循环中无法直接访问当前元素的索引,需要通过其他方式解决。

3️⃣ 使用及应用场景

  • 遍历数组:

    // 范例 3: foreach 遍历数组package com.xiaoshan.demo;public class TestDemo {  public static void main(String args[]){int[] numbers = {1, 2, 3, 4, 5};  for(int number : numbers) {      System.out.println(number);  }}}
  • 遍历集合:

    // 范例 4: foreach 遍历集合package com.xiaoshan.demo;public class TestDemo {  public static void main(String args[]){List fruits = Arrays.asList("apple", "banana", "cherry");for (String fruit : fruits) {      System.out.println(fruit);  }}}
  • 遍历自定义类型集合:

    // 范例 5: foreach 遍历自定义类型集合package com.xiaoshan.demo;class Person {String name;    public Person(String name){this.name = name;}  // getter和setter等代码省略}public class TestDemo {  public static void main(String args[]){List people = new ArrayList<>();  // 添加Person对象到people集合  people.add(new Person("张三"));  people.add(new Person("王五"));  for (Person person : people) {      System.out.println(person.getName());  }}}  
  • 使用带有索引的foreach循环:

    // 范例 6: 带有索引的foreach 遍历package com.xiaoshan.demo;public class TestDemo {  public static void main(String args[]){String[] fruits = {"apple", "banana", "cherry"};  int index = 0;  for (String fruit : fruits) {      System.out.println(index + ": " + fruit);      index++;  }}}

需要注意的是,范例6是通过借助 index变量,手动维护索引计数。

从以上案例可以发现,foreach 适用于各种遍历集合或数组的场景,特别是当我们只需要访问元素而不修改集合时,foreach提供了一种简洁的方式。

常见的应用场景主要包括:

  • 遍历集合进行数据处理、过滤或打印。
  • 对数组执行元素计数、求和等操作。
  • 针对自定义类型集合进行持久化、转换等处理。

而在使用foreach循环时,需要注意的是,foreach 循环中不能修改集合/数组的长度,否则会抛出 ConcurrentModificationException 并发修改异常。如果需要同时访问索引和元素,可以通过其他方式实现(如使用额外的计数器变量)。

🌾 总结

本文中,我们详细介绍了Java的 foreach特性,从它的起源、概念,到优缺点、特征和基础语法进行了全面讲解。我们还提供了丰富的代码案例来演示其使用技巧,并探讨了foreach的应用场景和注意事项。

通过合理地运用foreach特性,能够使代码更加简洁、易读,并且避免常见的错误。在日常开发中,我们建议熟练掌握foreach的用法,以便更高效地处理集合或数组的遍历操作。


温习回顾上一篇(点击跳转)《【Java基础教程】(二十一)Java新特性篇 · 第一讲:可变参数——概念及优缺点、特征及应用场景、使用技巧、构建动态日志工具实践~》

继续阅读下一篇(点击跳转)《【Java基础教程】(二十三)Java新特性篇 · 第三讲:泛型 Generics——泛型使用方式、通配符、类型擦除机制,对协变和逆变的支持 ~》

来源地址:https://blog.csdn.net/LVSONGTAO1225/article/details/131823306

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【Java基础教程】(二十二)Java新特性篇 · 第二讲:foreach循环——概念及优缺点、使用方式及应用场景~

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【Java基础教程】(二十二)Java新特性篇 · 第二讲:foreach循环——概念及优缺点、使用方式及应用场景~

Java基础教程之新特性 · foreach循环 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用及应用场景🌾 总结 1️⃣ 概念 Java的 foreach 特性最初出现在JDK 1.5中,也被称为“增强的for
2023-08-16

【Java基础教程】(三十二)常用类库篇 · 第二讲:包装类 Wrapper Class——概念及用途, 自动装箱与拆箱,常用操作方法~

Java基础教程之常用类库 · 包装类 1️⃣ 概念2️⃣ 设计目的(作用)和用途3️⃣ 使用3.1 自动装箱与拆箱3.2 常用方法3.3 常用属性3.4 null和默认值 4️⃣ 注意事项🌾 总结Ὅ
2023-08-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录