zoukankan      html  css  js  c++  java
  • Java中数组和集合的foreach操作编译后究竟是啥

    【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

    今天和同事在关于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集合来说是迭代器。

    版权声明

    【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

  • 相关阅读:
    经验谈 论前端架构的重要性
    论 Angular的混乱
    DTW 算法(转)
    软件提高发射功率原理
    (转)LSI SAS 1068E Raid CentOS 5.5 安装实例浪潮NF5220系列 分类: linux
    聚类算法总结
    信号相似性的描述
    python科学计算整理
    一个无线通信类投稿的期刊list
    2012年Elsevier旗下Computer Science期刊最新SCI影响因子排名
  • 原文地址:https://www.cnblogs.com/onblog/p/13043430.html
Copyright © 2011-2022 走看看