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
{ 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
其实a1和a2是指向的同一个对象。
简单点说就是a1把地址赋给了a2,而不是说也里面的值都给他了。
我想lz理解为复制了。它不是复制。。是地址赋值。
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]);
}
}
可以用一个方法。。
int[] ary2 = Arrays.copyOf(a1,a1.length);
lz说的对 他就是指针。。可是在java中没有指针 在java中要引用。就是c中的指针。