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)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

  • 相关阅读:
    sessionId控制单点登陆
    验证码的编写
    关于selectpicker的多选问题
    java的excel表格的导出与下载
    SpringMVC的乱码问题
    乱码的解决问题
    layui select下拉框监听值变化 layui 下拉列表的change事件
    RabbitMQ在Ubuntu上的环境搭建
    JAVA中 redisTemplate 和 jedis的配合使用
    优化JAVA查询Mongodb数量过大,查询熟读慢的方法
  • 原文地址:https://www.cnblogs.com/onblog/p/13043430.html
Copyright © 2011-2022 走看看