- 前言
- 代码
- 反编译
- 结论
前言
探究 foreach 循环语法糖。
代码首先,当然是先看下代码:
public static void foreach(int[] arr) {
for (int i : arr) {
System.out.println(i);
}
}
执行后生成的相关字节码为:
0 aload_0 1 astore_1 2 aload_1 3 arraylength 4 istore_2 5 iconst_0 6 istore_3 7 iload_3 8 iload_2 9 if_icmpge 31 (+22) 12 aload_1 13 iload_3 14 iaload 15 istore 4 17 getstatic #520 iload 4 22 invokevirtual #6 25 iinc 3 by 1 28 goto 7 (-21) 31 return
对 .class 文件进行反编译。
反编译此处我使用的是 IDEA 自带的反编译插件,得到的代码是:
public static void foreach(int[] arr) {
int[] var1 = arr;
int var2 = arr.length;
for(int var3 = 0; var3 < var2; ++var3) {
int i = var1[var3];
System.out.println(i);
}
}
结论
foreach 循环就是 for loop 的语法糖。



