Java的深拷贝和浅拷贝--构造函数(三)
程序员文章站
2022-07-06 09:32:44
...
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=方法,当元素为预定义非集合类型时则为深拷贝