日期:2014-05-20  浏览次数:20713 次

大家帮我看看这段代码是怎么执行呢?
int[] a1={1,2,3,4,5};
int[] a2;
a2=a1;
for (int i=0;i<a2.length;i++) 
a2[i]++;
for (int i=0;i<a1.length;i++)
System.out.println("a1["+i+"]="+a1[i]);


到底是怎么执行呢?

运行的结果是:
a1[0]=2
a1[1]=3
a1[2]=4
a1[3]=5
a1[4]=6

为什么是a1[0]=2呢?我实在搞不懂


------解决方案--------------------
a1和a2都是指向相同的区域的啊

你对a2进行a2[i]++; 这样的操作,实际上就是对数组所指的那片内存进行的操作,而不是地址,所以a1也会发生变化的。