我只是想创建一个物体的浅层和深层的副本.我知道,在深度复制中,您使用要复制的对象的值创建一个新对象,以防止副作用.我注意到的一件事是,我的浅表复制不会产生副作用,但我不明白为什么.
public class Joo {
public String name;
public Joo(String a) {
this.name = a;
}
public Joo(Joo a) {
this.name = a.name;
}
public static void main(String[] args) {
Joo a = new Joo("Bernt");
Joo b = new Joo(a);
System.out.println("a :" +a.name); //a :Bernt
System.out.println("b :" +b.name); //b :Bernt
b.name = "Ernie";
System.out.println("a :" +a.name); //a :Bernt
System.out.println("b :" +b.name); //b :Ernie
}
}
我预计当我更改b.name时,它也会更改a.name,因为b.name只是对a.name对象的引用,而不是真正的副本.