情景:
想着用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
