java吧 关注:1,245,387贴子:12,720,624
  • 6回复贴,共1

java菜鸟求助

只看楼主收藏回复

package test;
public class Arrays {
public static void main(String[] args) {
int[] a1 = { 1, 2, 3, 4, 5 };
int[] a2;
a2 = a1;
System.out.println(a1.length);
for(int i = 0; i < a2.length; i++)
a2[i]++;
for(int i = 0; i < a1.length; i++)
prt("a1[" + i + "] = " + a1[i]);
}
static void prt(String s) {
System.out.println(s);
}
} ///:~
为什么最后输出的是:
5
a1[0] = 2
a1[1] = 3
a1[2] = 4
a1[3] = 5
a1[4] = 6
//我觉得a1[]数组的值根本没变啊


1楼2016-06-03 15:29回复
    因为a2=a1.a2[i]++,所以a1中各元素都会加1


    IP属地:陕西来自Android客户端2楼2016-06-03 15:37
    收起回复
      a1和a2引用了同一个地址,指向了你创建的array,a2的改变就会导致a1的改变。
      不明白的话可以画一个stack 和heap的图,就很容易明白。


      IP属地:中国香港3楼2016-06-03 15:38
      收起回复
        a1,a2 指向的堆内存中同一个数组,a2数组变了,a1的值也变了?


        IP属地:山东来自Android客户端4楼2016-06-03 15:42
        回复