深拷贝和浅拷贝是只针对引用数据类型的。
引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内存里。
区别:
浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。
深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。
类型 | 和原数据是否指向同一对象 | 原数据为基本数据类型 | 原数据中包含子对象 |
---|
赋值 | 是 | 改变会使原数据一同改变 | 改变会使原数据一同改变 |
浅拷贝 | 否 | 改变不会使原数据一同改变 | 改变会使原数据一同改变 |
深拷贝 | 否 | 改变不会使原数据一同改变 | 改变不会使原数据一同改变 |