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

最新文章

  1. RabbitMQ基础知识
  2. 『.NET Core CLI工具文档』(九)dotnet-run
  3. 【只需3步】Linux php的安装与配置[源码安装]
  4. 辨析relative与absolute
  5. CentOS 访问Windows7共享文件夹
  6. android tools使用方式
  7. iScroll.js和Swiper.js联合使用时的插件冲突(滑动冲突)
  8. 菜鸟日记-HTML-表格与表单
  9. 洛谷P1202 [USACO1.1]黑色星期五Friday the Thirteenth
  10. getName()、getCanonicalName()、getSimpleName()异同
  11. wpf为ListBox添加渐变
  12. 网络安全实验室_上传关writeup
  13. vscode mysql v0.3插件 连接不了
  14. 51nod 1615 跳跃的杰克
  15. vue2.0模拟锚点
  16. CentOS6.5 下将 Python2.6.6 升级到Python3.5
  17. Darknet卷基层浅层特征可视化教程
  18. Linux命令-用户管理:useradd,userdel,usermod,id,su,env,exit
  19. Mindoc搭建流程
  20. 基本运算符与流程控制(Day5)

热门文章

  1. CSS揭秘—透明边框(一)
  2. 每日分享!~ JavaScript(拖拽事件)
  3. 知识小罐头04(idea+maven+部署war包到tomcat 下)
  4. [翻译]Linux 内核里的数据结构 —— 基数树
  5. 3.1依赖注入「深入浅出ASP.NET Core系列」
  6. Java——泛型
  7. C#枚举的简单使用
  8. 一个简易的Python爬虫,将爬取到的数据写入txt文档中
  9. vue学习记录③(路由)
  10. Util6 MIS2.0 (优六信息化管理系统框架)