public class Arrays
{   public static void main(String[] args)
    {  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] = 1
a1[1] = 2
a1[2] = 3
a1[3] = 4
a1[4] = 5

解决方案 »

  1.   

    你好。
    其实a1和a2是指向的同一个对象。
    简单点说就是a1把地址赋给了a2,而不是说也里面的值都给他了。
    我想lz理解为复制了。它不是复制。。是地址赋值。
      

  2.   

    public class Arrays {
    public static void main(String[] args) {
    int[] a1 = { 1, 2, 3, 4, 5 };
    int[] a2;
    // 可以理解为 a2 引用 a1 的地址
    a2 = a1; for (int i = 0; i < a2.length; i++)
    // a2[i] = a[i] + 1
    a2[i]++;
    // 实际打印其实就是a2
    for (int i = 0; i < a1.length; i++)
    System.out.println("a1[" + i + "] = " + a1[i]);
    }
    }
      

  3.   


    可以用一个方法。。
    int[] ary2 = Arrays.copyOf(a1,a1.length);
    lz说的对  他就是指针。。可是在java中没有指针  在java中要引用。就是c中的指针。