java 增强for循环的效率问题
2011-06-23 09:23
471 查看
偶尔讨论起增强for循环是不是效率会不如普通的迭代遍历呢。在网上搜索一下这二者的效率没有发现一个合理的解释。
示例代码
生成的class文件
通过查看编译后的class文件可以看得到。增强for循环在编译后,自动转换为使用Iterator迭代。所以二者除了写法上没有任何区别。
示例代码
List<String> l = new ArrayList<String>(); l.add("abc"); for(String str:l){ System.out.println(str); }
生成的class文件
new java.util.ArrayList [16] 3 dup 4 invokespecial java.util.ArrayList() [18] 7 astore_1 [l] 8 aload_1 [l] 9 ldc <String "abc"> [19] 11 invokeinterface java.util.List.add(java.lang.Object) : boolean [21] [nargs: 2] 16 pop 17 aload_1 [l] 18 invokeinterface java.util.List.iterator() : java.util.Iterator [27] [nargs: 1] 23 astore_3 24 goto 44 27 aload_3 28 invokeinterface java.util.Iterator.next() : java.lang.Object [31] [nargs: 1] 33 checkcast java.lang.String [37] 36 astore_2 [str] 37 getstatic java.lang.System.out : java.io.PrintStream [39] 40 aload_2 [str] 41 invokevirtual java.io.PrintStream.println(java.lang.String) : void [45] 44 aload_3 45 invokeinterface java.util.Iterator.hasNext() : boolean [51] [nargs: 1] 50 ifne 27 53 return
通过查看编译后的class文件可以看得到。增强for循环在编译后,自动转换为使用Iterator迭代。所以二者除了写法上没有任何区别。
相关文章推荐
- Java学习(3)-增强for循环注意的问题
- java 增强for循环中的删除问题
- java基础之增强for循环和jdk字符串
- Arrylist三种遍历iterator,for,增强for循环效率测试
- Java学习笔记_4_增强的for循环
- java中的增强for循环与js中的增强for循环区别
- Java之增强的for 循环
- 递归求和(Recursive)与for循环求和效率问题的简单比较
- java中for循环问题
- java for循环增强(foreach)
- java5.0中增强的for/in循环
- 详解Java中的增强 for 循环 foreach
- java基础:增强for循环
- 【java学习笔记】for增强循环
- Java之使用增强for循环和迭代器遍历
- Java——增强for循环
- Java中for循环中执行顺序问题及break, continue用法
- JAVA1.5 增强的for 循环的新特性
- JAVA使用增强for循环和迭代器遍历Map集合
- Java基础 for循环增强语句的局限性