1.预定义非集合类型--拷贝构造函数
public class TestA {
public static void main(String[] args) {
Integer a = 1;
Integer b = new Integer(a);
b = 2;
if (!a.equals(b)) {
System.out.println("deep copy");
}
String m = "ok";
String n = new String(m);
n = "no";
if (!m.equals(n)) {
System.out.println("deep copy");
}
}
}
结果:都是deep copy
结论:预定义非集合类型,如果支持拷贝构造函数的类型,则是深拷贝
2. 预定义集合类型--拷贝构造函数--元素为预定义集合类型
import java.util.ArrayList;
public class TestA {
public static void main(String[] args) {
ArrayList list1 = new ArrayList();
list1.add("yangzhou");
ArrayList list2 = new ArrayList(list1);
list1.clear();
if (list2.isEmpty()) {
System.out.println("shallow copy");
} else {
System.out.println("deep copy");
}
}
}
结果:deep copy
结论:预定义集合类型拷贝构造函数,会逐个调用每个元素的operator=方法,当元素为预定义非集合类型时则为深拷贝