1.浅拷贝:拷贝之后针对b操作可能影响到a
2.深拷贝:原来对象a,拷贝之后的对象为b。深拷贝之后意味着对b进行的任何操作都不会影响到a
浅拷贝代码举例:
private static Test copy(Test a) {
//浅拷贝
Test b = new Test();
b.data = a.data;
return b;
}
public static void main(String[] args) {
Test a = new Test();
a.data.add(1);
a.data.add(2);
a.data.add(3);
Test b = copy(a);
a.data.add(4);
System.out.println(a);
System.out.println(b);
}
深拷贝代码举例:
private static Test deepCopy(Test a) {
Test b = new Test();
b.data.addAll(a.data);
return b;
}
public static void main(String[] args) {
Test a = new Test();
a.data.add(1);
a.data.add(2);
a.data.add(3);
Test b = deepCopy(a);
a.data.add(4);
System.out.println(a);
System.out.println(b);
}