深拷贝和浅拷贝的主要区别就是拷贝的深度不同。
深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象。
浅拷贝基本类型之前互不影响,引用类型其中一个对象改变了地址,就会影响另一个对象;深拷贝改变新对象不会影响原对象,他们之前互不影响。
深拷贝和浅拷贝是指拷贝的深度,浅拷贝只是拷贝第一层,深拷贝则是拷贝所有层。
深拷贝会拷贝所有数据,也就是说会创建一个新的对象,里面的数据和源对象是完全不同的,互不影响。
浅拷贝仅仅是拷贝第一层,如果源对象有子对象,则子对象不会被拷贝,新对象和源对象的子对象指向同一块内存空间,这样一来,修改源对象的子对象,也会影响新对象子对象的值,反之亦然。