1

我们有以下代码:

Vector a ; // containing some struct info
Vector b;
b = a ;

如果我们修改b它会影响包含a吗?

4

2 回答 2

4

是的。两者ba都将引用Vector堆上的同一个实例。任何对象都会发生这种情况,包括数组。

假设向量a位于堆上一个名为 12345 的假设位置。a的值(因为 A 是参考)是 12345。b=a完成后,b也等于 12345。取消引用b会将您放在堆上的同一个位置,因此是同一个对象。

于 2013-09-10T23:54:33.660 回答
1

是的!那是一个平面副本。要制作深拷贝,请使用 Collections:

向量 b = 新向量(a.size()); b.setSize(a.size()); Collections.copy(b,a);

希望有帮助。

编辑:

hexafraction 是对的,更好的答案是(使用复制构造函数):

Vector b = new Vector(a);
于 2013-09-10T23:56:14.020 回答