我有一个数组a1和a2这个javacode究竟做了什么?
什么是代码a1 = a2;准确地做?复制Array a1中的所有元素? 这就是我的想法,但似乎并没有发生?
不,它不拷贝任何数组元素,而是分配一个引用。总之,这意味着a1引用与a2完全相同的数组对象引用。
代码:
int[] a1 = new int[] { 1, 2, 3 };
int[] a2 = new int[] { 4, 5, 6 };
a1 = a2;
a1[1] = 3;
a2[2] = 2;
a2 = a1;
for (int i = 0; i < a2.length; i++) {
System.out.print(a2[i] + " ");
}
有人可以explan为什么结果是4 3 2,而不是4 3 6?
Java中唯一不是对象的东西是原始类型(byte,char,int,float等)。基元将会复制它们的值而不是引用。 – DeathByTensors
我将此行为解释为:“对象分配不*创建副本/克隆/副本。”因此,结果是*原始*对象现在被多个名称知道(“引用”):即'a1'和'a2'。 – user2864740