全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Java中的增强 for 循环 foreach

foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理。能够提高性能,并减少代码出错的几率。在 Java 中还有比如 泛型、自动拆箱、自动装箱、内部类、枚举等等。

foreach 是用来对数组或者集合进行遍历的语法。具体语法如下:

for(元素类型 ele : 数组名/Iterable 实例){
} 

下面我们用 foreach 来对数组和一个集合进行遍历:

int [] array = {1,2,3};

for(int i : array){

  System.out.println(i);

}

   

List list = new ArrayList();

list.add(1);

list.add(2);

list.add(3);

for(Object obj : list){

  System.out.println(obj);

} 

然后我们可以通过反编译工具,查看 class 文件内容:

int array[] = {1,2,3};

  int [] array$ = array;

  for(int len$ = array$.length, i$ = 0; i$<len$; ++i$ )

  {

    int i = array$[i$];

    {

      System.out.println(i);

    }

  }
  List list = new ArrayList();

  list.add(1);

  list.add(2);

  list.add(3);

  for(java.util.Iterator i$ = list.iterator(); i$.hasNext();)

  {

    String s = (String) i$.next();

    {

      System.out.println(s);

    }

  } 

很明显:

1、对于数组,foreach 循环实际上还是用的普通的 for 循环

2、对于集合,foreach 循环实际上是用的 iterator 迭代器迭代

 注意:如果我们想一边迭代,一边删除集合中的元素,如下:

List list = new ArrayList();

list.add(1);<br>    list.add(2);

  list.add(3);

for(Object obj : list){

  System.out.println(obj);

  list.remove(obj); //一边迭代一边删除

} 

这样写会报如下错误:这是一个并发修改异常报错

原因:当迭代器运行的时候,在当前线程 A 中,会单独的创建一个线程 B。A 负责继续迭代,B 线程负责删除。B 线程每次都会去检查 A 线程中的元素是否相同,如果不是就会报错

因为上面删除的方法是 使用 Collection(ArrayList 的父类) 集合中的 remove()方法。该方法只能从集合中删除元素,不能把迭代器中的元素也删除了。

解决办法:使用 iterator 迭代器中的remove()方法

Iterator it = list.iterator();

while(it.hasNext()){

  Object obj = it.next();

  System.out.println(obj);

  if(obj.equals(1)){

   it.remove();//这里是用 迭代器的 remove() 方法<br>       //list.remove(obj);//如果你用 集合 方法,那么还是会报错

  }

    } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java  # 增强for循环  # java中增强for循环  # java增强的for循环  # Java中增强for循环的实现原理和坑详解  # java增强for循环的实现方法  # 浅谈java 增强型的for循环 for each  # Java中使用增强for循环的实例方法  # 关于Java中增强for循环使用的注意事项  # Java流程控制之循环结构for  # Java中增强for循环代码示例  # 迭代  # 报错  # 遍历  # 会报  # 器中  # 就会  # 都有  # 这是一个  # 我们可以  # 如果不是  # 能把  # 每次都  # 很明显  # 会去  # 你用  # 解决办法  # 创建一个  # 大家多多  # 每一种  # 反编译 


相关文章: 网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  怀化网站制作公司,怀化新生儿上户网上办理流程?  开封网站制作公司,网络用语开封是什么意思?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  香港服务器选型指南:免备案配置与高效建站方案解析  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何确认建站备案号应放置的具体位置?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  c# 在高并发场景下,委托和接口调用的性能对比  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  已有域名和空间如何搭建网站?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  子杰智能建站系统|零代码开发与AI生成SEO优化指南  C#怎么创建控制台应用 C# Console App项目创建方法  购物网站制作公司有哪些,哪个购物网站比较好?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  如何在阿里云通过域名搭建网站?  如何在云主机快速搭建网站站点?  建站之星如何配置系统实现高效建站?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何在Windows服务器上快速搭建网站?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何在橙子建站中快速调整背景颜色?  南平网站制作公司,2025年南平市事业单位报名时间?  如何在阿里云虚拟主机上快速搭建个人网站?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何选择CMS系统实现快速建站与SEO优化?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  非常酷的网站设计制作软件,酷培ai教育官方网站?  网站制作公司排行榜,抖音怎样做个人官方网站  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  SQL查询语句优化的实用方法总结  家具网站制作软件,家具厂怎么跑业务?  全景视频制作网站有哪些,全景图怎么做成网页?  宝塔建站助手安装配置与建站模板使用全流程解析  黑客如何利用漏洞与弱口令入侵网站服务器?  如何在香港免费服务器上快速搭建网站?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  建站三合一如何选?哪家性价比更高?  中山网站制作网页,中山新生登记系统登记流程?  如何通过商城免费建站系统源码自定义网站主题?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  阿里云网站制作公司,阿里云快速搭建网站好用吗?  如何在腾讯云服务器快速搭建个人网站?  常州企业网站制作公司,全国继续教育网怎么登录?  广东专业制作网站有哪些,广东省能源集团有限公司官网? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。