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