电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java for each實現機制代碼原理解析

瀏覽:3日期:2022-08-30 15:47:05

源測試代碼如下

public class ForEachTest { public void test4Iterate(Iterable<String> strings) { for (String str : strings) { System.out.println(str); } } public void test4Array(String[] strings) { for (String str : strings) { System.out.println(str); } }}

執行編譯命令

javac ForEachTest.java

使用idea查看反編的Java文件

import java.util.Iterator;public class ForEachTest { public ForEachTest() { } public void test4Iterate(Iterable<String> var1) { Iterator var2 = var1.iterator(); while(var2.hasNext()) { String var3 = (String)var2.next(); System.out.println(var3); } } public void test4Array(String[] var1) { String[] var2 = var1; int var3 = var1.length; for(int var4 = 0; var4 < var3; ++var4) { String var5 = var2[var4]; System.out.println(var5); } }}

執行指令查看對應的匯編指令

javap -c ForEachTest.class

Compiled from 'ForEachTest.java'public class ForEachTest { public ForEachTest(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object.'<init>':()V 4: return public void test4Iterate(java.lang.Iterable<java.lang.String>); Code: 0: aload_1 1: invokeinterface #2, 1 // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator; 6: astore_2 7: aload_2 8: invokeinterface #3, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z 13: ifeq 36 16: aload_2 17: invokeinterface #4, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; 22: checkcast #5 // class java/lang/String 25: astore_3 26: getstatic #6 // Field java/lang/System.out:Ljava/io/PrintStream; 29: aload_3 30: invokevirtual #7 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 33: goto 7 36: return public void test4Array(java.lang.String[]); Code: 0: aload_1 1: astore_2 2: aload_2 3: arraylength 4: istore_3 5: iconst_0 6: istore 4 8: iload 4 10: iload_3 11: if_icmpge 34 14: aload_2 15: iload 4 17: aaload 18: astore 5 20: getstatic #6 // Field java/lang/System.out:Ljava/io/PrintStream; 23: aload 5 25: invokevirtual #7 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 28: iinc 4, 1 31: goto 8 34: return}

由反編類和匯編指令可以看到對于Iterable類,是通過其迭代方法執行for each,而對于數組是通過傳統的for循環方式執行迭代

因為集合類的for each是基于迭代器循環的,所以根據迭代器實現的不同,for each的性能也會不同

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 河南彩印编织袋,郑州饲料编织袋定制,肥料编织袋加工厂-盛军塑业 河南凯邦机械制造有限公司 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 发光字|标识设计|标牌制作|精神堡垒 - 江苏苏通广告有限公司 | 仓储笼_金属箱租赁_循环包装_铁网箱_蝴蝶笼租赁_酷龙仓储笼租赁 测试治具|过炉治具|过锡炉治具|工装夹具|测试夹具|允睿自动化设备 | 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 自动化展_机器人展_机床展_工业互联网展_广东佛山工博会 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 厦门网站建设_厦门网站设计_小程序开发_网站制作公司【麦格科技】 | 金属管浮子流量计_金属转子流量计厂家-淮安润中仪表科技有限公司 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 精准猎取科技资讯,高效阅读科技新闻_科技猎 | 济南铝方通-济南铝方通价格-济南方通厂家-山东鲁方通建材有限公司 | 宝鸡市人民医院| 氧化锆陶瓷_氧化锆陶瓷加工_氧化锆陶瓷生产厂家-康柏工业陶瓷有限公司 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 飞飞影视_热门电影在线观看_影视大全 | 西安烟道厂家_排气道厂家_包立管厂家「陕西西安」推荐西安天宇烟道 | 一航网络-软件测评官网 | 浙江红酒库-冰雕库-气调库-茶叶库安装-医药疫苗冷库-食品物流恒温恒湿车间-杭州领顺实业有限公司 | 京港视通报道-质量走进大江南北-京港视通传媒[北京]有限公司 | 分子精馏/精馏设备生产厂家-分子蒸馏工艺实验-新诺舜尧(天津)化工设备有限公司 | 流量检测仪-气密性检测装置-密封性试验仪-东莞市奥图自动化科技有限公司 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 法钢特种钢材(上海)有限公司 - 耐磨钢板、高强度钢板销售加工 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 防爆电机_ybx3系列电机_河南省南洋防爆电机有限公司 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | BHK汞灯-百科|上海熙浩实业有限公司 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 洁净棚-洁净工作棚-无菌室-净化工程公司_北京卫护科技有限公司 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 |