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小时内与您取得联系。