情景:
想着用foreach循环的过程中改变数组的数值,结果发现改变不了。然后debug发现并没有进去什么方法,就去搜,结果提示可以查看class文件,在class文件中找到了答案。
数组
.java文件
for (int anInt : ints) {
anInt = 5;
System.out.println(anInt);
}
System.out.println(Arrays.toString(ints));
.class文件
int[] ints = new int[]{1, 2, 3};
int[] var4 = ints;
int var5 = ints.length;
for(int var6 = 0; var6 < var5; ++var6) {
int var10000 = var4[var6];
int anInt = 5;
System.out.println(anInt);
}
System.out.println(Arrays.toString(ints));
运行结果是:
5 5 5
[1, 2, 3]
集合
.java文件
ArrayList list = new ArrayList();
list.add(1);
list.add(1);
list.add(3);
for (Object o : list) {
System.out.println(o);
}
.class文件
ArrayList list = new ArrayList();
list.add(1);
list.add(1);
list.add(3);
Iterator var4 = list.iterator();
while(var4.hasNext()) {
Object o = var4.next();
System.out.println(o);
}
运行结果:
1
1
3