全网整合营销服务商

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

免费咨询热线: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循环代码示例  # 迭代  # 报错  # 遍历  # 会报  # 器中  # 就会  # 都有  # 这是一个  # 我们可以  # 如果不是  # 能把  # 每次都  # 很明显  # 会去  # 你用  # 解决办法  # 创建一个  # 大家多多  # 每一种  # 反编译 


相关文章: 如何在搬瓦工VPS快速搭建网站?  css网站制作参考文献有哪些,易聊怎么注册?  建站ABC备案流程中有哪些关键注意事项?  建站之星如何配置系统实现高效建站?  大连网站制作公司哪家好一点,大连买房网站哪个好?  无锡营销型网站制作公司,无锡网选车牌流程?  如何确认建站备案号应放置的具体位置?  如何快速搭建高效香港服务器网站?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  定制建站是什么?如何实现个性化需求?  h5网站制作工具有哪些,h5页面制作工具有哪些?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  制作门户网站的参考文献在哪,小说网站怎么建立?  建站之星安装步骤有哪些常见问题?  如何用花生壳三步快速搭建专属网站?  如何访问已购建站主机并解决登录问题?  想学网站制作怎么学,建立一个网站要花费多少?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  高防服务器租用首荐平台,企业级优惠套餐快速部署  如何用狗爹虚拟主机快速搭建网站?  如何通过虚拟主机快速完成网站搭建?  如何在宝塔面板中创建新站点?  山东网站制作公司有哪些,山东大源集团官网?  建站主机无法访问?如何排查域名与服务器问题  网站代码制作软件有哪些,如何生成自己网站的代码?  制作证书网站有哪些,全国城建培训中心证书查询官网?  建站VPS推荐:2025年高性能服务器配置指南  网站插件制作软件免费下载,网页视频怎么下到本地插件?  网站制作网站,深圳做网站哪家比较好?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何选择可靠的免备案建站服务器?  建站之星收费标准详解:套餐费用及年费价格表一览  装修招标网站设计制作流程,装修招标流程?  如何快速搭建高效可靠的建站解决方案?  实例解析Array和String方法  如何做静态网页,sublimetext3.0制作静态网页?  网站设计制作企业有哪些,抖音官网主页怎么设置?  临沂网站制作企业,临沂第三中学官方网站?  建站主机服务器选购指南:轻量应用与VPS配置解析  建站168自助建站系统:快速模板定制与SEO优化指南  如何通过智能用户系统一键生成高效建站方案?  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何在IIS服务器上快速部署高效网站?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  开源网站制作软件,开源网站什么意思?  ,网站推广常用方法?  网站制作企业,网站的banner和导航栏是指什么?  制作网页的网站有哪些,电脑上怎么做网页? 

您的项目需求

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