gpt4 book ai didi

java - 复制引用数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:31 25 4
gpt4 key购买 nike

我在阅读有关复制引用数组的内容。

Object[] obj1 = {new Integer(11),
new StringBuffer("foobar"),
new Double(12.95)};

Object[] obj2 = new Object[obj1.length];
for(int i = 0; i < obj1.length; i ++)
obj2[i] = obj1[i];

//this change to obj1 does NOT effect obj2.
obj1[0] = new Integer(5);

System.out.println(Arrays.toString(obj1));
System.out.println(Arrays.toString(obj2));
System.out.println();


//this change to obj1 DOES effect obj2
((StringBuffer) obj1[1]).append('s');

System.out.println(Arrays.toString(obj1));
System.out.println(Arrays.toString(obj2));

两个数组都指向相同的元素,但改变元素会在第二种情况下更改第二个数组,而不是在第一种情况下。有人能解释一下为什么它在第一种情况下不更改第二个数组吗?

最佳答案

obj1[0] = new Integer(5);

在这里,您将一个新对象的引用分配给其中一个数组的第一个索引,因此另一个数组的第一个索引保持引用不同的对象并且不受影响。

((StringBuffer) obj1[1]).append('s');

此处您正在更改 obj1[1] 引用的对象的状态,该对象与 obj2[1] 引用的对象相同。因此,两个阵列都会受到影响。

关于java - 复制引用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41320378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com