您的位置:首页 > 编程语言 > Java开发

java 增强for循环的效率问题

2011-06-23 09:23 471 查看
偶尔讨论起增强for循环是不是效率会不如普通的迭代遍历呢。在网上搜索一下这二者的效率没有发现一个合理的解释。

示例代码

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迭代。所以二者除了写法上没有任何区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: