我们有以下代码:
Vector a ; // containing some struct info
Vector b;
b = a ;
如果我们修改b
它会影响包含a
吗?
是的。两者b
和a
都将引用Vector
堆上的同一个实例。任何对象都会发生这种情况,包括数组。
假设向量a
位于堆上一个名为 12345 的假设位置。a
的值(因为 A 是参考)是 12345。b=a
完成后,b
也等于 12345。取消引用b
会将您放在堆上的同一个位置,因此是同一个对象。
是的!那是一个平面副本。要制作深拷贝,请使用 Collections:
向量 b = 新向量(a.size()); b.setSize(a.size()); Collections.copy(b,a);
希望有帮助。
编辑:
hexafraction 是对的,更好的答案是(使用复制构造函数):
Vector b = new Vector(a);