Java中数组和集合的foreach操作编译后究竟是啥
今天和同事在关于foreach编译后是for循环还是迭代器有了不同意见,特做了个Demo,了解一下。
是啥自己来看吧!
public class Demo { public static void main(String[] args) { int[] ints = new int[5]; for (int s : ints) { System.out.println(s); } String[] intss = new String[5]; for (String s : intss) { System.out.println(s); } List<String> strings = new ArrayList<>(); for (String s : strings) { System.out.println(s); } Map<String,String> map = new HashMap<>(); for (Map.Entry e: map.entrySet()) { System.out.println(e.getKey()); } } }
编译后查看的源码:
public class Demo { public Demo() { } public static void main(String[] args) { int[] ints = new int[5]; int[] var2 = ints; int var3 = ints.length; int var4; int s; for(var4 = 0; var4 < var3; ++var4) { s = var2[var4]; System.out.println(s); } String[] intss = new String[5]; String[] var8 = intss; var4 = intss.length; for(s = 0; s < var4; ++s) { String s = var8[s]; System.out.println(s); } List<String> strings = new ArrayList(); Iterator var10 = strings.iterator(); while(var10.hasNext()) { String s = (String)var10.next(); System.out.println(s); } Map<String, String> map = new HashMap(); Iterator var13 = map.entrySet().iterator(); while(var13.hasNext()) { Entry e = (Entry)var13.next(); System.out.println(e.getKey()); } } }
总结:
foreach对于数组来说依旧是for循环,对List、Map集合来说是迭代器。
原文地址:https://www.cnblogs.com/yueshutong/p/10767810.html
相关推荐
-
过滤器应用【编码、敏感词、压缩、转义过滤器】 Java基础
2020-5-30
-
2017年 JavaScript 框架回顾 — 前端框架 Java基础
2020-5-29
-
这个案例写出来,还怕跟面试官扯不明白 OAuth2 登录流程? Java基础
2020-6-15
-
“挑三拣四”地学一学Java I/O Java基础
2019-3-24
-
Java工程师修炼之路 Java基础
2018-12-10
-
深入理解JVM – ZGC垃圾收集器 Java基础
2020-5-28
-
深入探索 Android 内存优化(炼狱级别) Java基础
2020-6-15
-
Jdk8 suportted JacksonUtil Java基础
2019-8-22
-
这样终止线程,竟然会导致服务宕机? Java基础
2020-6-15
-
如何正确使用Java序列化? Java基础
2019-5-9