foreach(增强for)的使用以及其底层原理

foreach是一个技术名称,是一种遍历方式,通常又可被称为增强的for循环遍历,foreach遍历的关键是记住foreach的遍历格式,foreach形式遍历既可以遍历集合也可以遍历数组。
一、增强for格式

for(被遍历集合或者数组中元素的类型 变量 : 被遍历集合或者数组){
System.out.println(变量);
}

例如:
在这里插入图片描述在这里插入图片描述
二、增强for的优点与缺点
优点:简化了数组或集合遍历的迭代写法,foreach遍历在写法上显得更加的简洁和方便;
缺点:增强for无法知道当前已经遍历到了数组的哪个索引位置处,即无法直接获取索引下标;
使用增强for的场景:进行不关注索引下标的数组或集合迭代;

三、增强for的底层实现原理
首先使用IntelliJ IDEA软件的反编译功能对上述的案例的class文件进行反编译,反编译后的案例代码如下:
在这里插入图片描述
先来关注数组的增强for循环的底层原理,从下图反编译出的源码可以看出,对数组进行增强for遍历其实底层实现就是运用了普通数组遍历是采用的带索引下标的迭代(遍历)
在这里插入图片描述
再来看看对集合使用增强for遍历时其底层实现方式,从下图中可以直观清晰的看出对集合使用增强for遍历就是获取该集合迭代器完成迭代操作,其原理就是获取迭代器(Iterator)对集合元素进行迭代操作:
在这里插入图片描述

版权声明:本文为weixin_44493080原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44493080/article/details/102514371

智能推荐

Android-Scroller使用以及原理

简介 使用scollTo/scollBy方法进行滑动时,这个过程是瞬间完成的,所以用户体验不大好。如果使用 Scroller 来实现有过渡效果的滑动,这个过程不是瞬间完成的,而是在一定的时间间隔内完成的。 Scroller本身是不能实现View的滑动的,它需要与View的computeScroll()方法配合才能实现弹性滑动的效果。 使用 在自定义View的构造函数中初始化Scroller。 重写...

力扣160:相交链表

这一道题的思路: 1、如国两个链表有一个为NULL,那就直接返回NULL; 2、如果两个链表相交,那么搜索的长度=短链表的长度; 3、题目默认不存在val相等,相等,突然不相等的情况; 遇到的问题:测试用例,返回1,预期是8 为什么? 因为题目想要的是节点一样而不是节点值一样,对于两个值为1的节点,他们的前驱是不一样的,因此,第一个相等的节点是值为8的节点 解决的方法: 把判断值相等改为判断链表相...

Windows SDK学习之文本字符相关内容

个人学习,不作他用,视频来源B站 Windows三大核心部件 kernel:内核管理,文件输入与输出,任务管理等 GDI:图形设备接口,负责系统与绘画程序之间的信息交换 user:窗口管理,用户界面 设备环境(Device Context)又称设备上下文或设备描述表,设备环境句柄是程序使用GDI函数的通行证,实际上是GDI内部维护的数据结构,存放文本的一些属性如字体大小等。 获取设备环境句柄 1....

LintCode 逆波兰式求值

逆波兰表达式求值思路:从左到右遍历表达式,遇见数字则进栈,遇见字符则弹出栈顶的两数字计算,计算结果进栈。 case处的代码多余重复了,显得很难看。修改一下,看起来舒服很多,如下: atoi(tokens[i].c_str()) : atoi() 把字符串转成整形数 c_str() 返回字符串的地址...

JAVA中线程知识点--线程的创建与启动(一)

上一篇讲述了进程跟线程的基本概念,这篇就看一下 线程的创建跟启动吧 JAVA中使用Thread代表线程 所以JAVA中所有线程对象都必须为该类或者该类子类的实例,线程被创建用来完成一定的任务,也就是执行特定的代码流。线程执行体则为JAVA中的代码流 创建线程有三种方式,每种都各有特色~~~ 一、继承Thread类,创建子类的实例 ,重写父类run()方法,该run()方法就是执行体,通过调用子类实...

猜你喜欢

CSS之自定义栅格系统

1:一些规范 .col-xs-* 超小屏幕 手机 (<768px) .col-sm-* 小屏幕 平板 (≥768px) .col-md-* 中等屏幕 桌面显示器 (≥992px) .col-lg-* 大屏幕 大桌面显示器 (≥1200px) 2: 代码 3:效果 1:中屏幕 2:小屏幕...

JavaScript——Event Loop事件队列,同步异步操作

目录 理解Event Loop 规则 例题 例题1 顺丰面试题 例题2 比较全面的检测 例题3 来自《深入浅出Node.js》 例题4 Promise的异步 例题4 setTimeout的时间变化 例题5 宏任务和微任务互相穿插 理解Event Loop Event Loop即事件循环,是指浏览器或Node的一种解决javaScript单线程运行时不会阻塞的一种机制,也就是我们经常使用异步的原理。...

SpringBoot 过滤器 filter 3种方法

文章目录 前言 一、3种配置Spring Boot过滤器的方法 二、web.xml的配置 三、Spring Boot过滤器方式1,使用@WebFilter注解 1.WebFilter的常用属性 2.使用方法 3.代码演示 四、Spring Boot过滤器方式2,使用FilterRegistrationBean 1.自定义类演示 2.第三方jar演示 五、Spring Boot过滤器方式3,实现Se...

Python 的多文件和注释

多文件项目的演练 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件 通常每 一个项目 就具有一个 独立专属的目录,用于保存 所有和项目相关的文件 一个项目通常会包含 很多源文件 目标 在项目中添加多个文件,并且设置文件的执行 多文件项目演练 在 01_Python基础 项目中新建一个 hm_02_第2个Python程序.py 在 hm_02_第2个Python程序.py 文件中添加一句 p...

pytorch卷积层与池化层输出的尺寸的计算公式详解

pytorch卷积层与池化层输出的尺寸的计算公式详解 要设计卷积神经网络的结构,必须匹配层与层之间的输入与输出的尺寸,这就需要较好的计算输出尺寸 先列出公式: 即: 例Conv2d(后面给出实例来讲解计算方法): ` 实例: cove1d:用于文本数据,只对宽度进行卷积,对高度不进行卷积 cove2d:用于图像数据,对宽度和高度都进行卷积 我们在这个实例中抽出网络结构部分: 网络结构为: 输入图片...

玻璃钢生产厂家郑州标识玻璃钢仿铜雕塑公司常州玻璃钢雕塑加工玻璃钢雕塑人物怎么翻模玻璃钢雕塑价格多少长沙欧式玻璃钢雕塑供应商珠海泰安玻璃钢雕塑室内商场美陈生产公司三明玻璃钢景观雕塑玻璃钢雕塑制作视频教程高质量玻璃钢雕塑方法洛阳揭阳玻璃钢卡通雕塑玻璃钢恐龙雕塑服务商北京秋季商场美陈售价商场 圣诞主题美陈江西景观玻璃钢雕塑批发洛阳抽象玻璃钢仿铜雕塑树脂玻璃钢雕塑作品商场装饰玻璃钢卡通雕塑批发玻璃钢大象雕塑安装方法宁夏抽象人物玻璃钢雕塑设计新郑玻璃钢雕塑生产厂江西玻璃钢雕塑市场报价景洪市玻璃钢雕塑设计报价清远玻璃钢卡通雕塑厂家上海人物玻璃钢雕塑优势淄博玻璃钢造型雕塑江西景观玻璃钢雕塑定做价格玻璃钢雕塑漆和金属漆哪个好黄石玻璃钢雕塑制作玻璃钢园林雕塑加盟香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化