1. 引用拷贝(Reference Copy)
引用拷贝是指将一个引用(或指针)变量的值赋给另一个引用变量,使它们指向同一个内存地址或对象。这意味着两个引用变量实际上指向同一个对象,因此对这个对象的任何修改都会反映到所有引用它的变量上。在许多编程语言中,赋值操作符(如=
)通常执行的就是引用拷贝。
2. 浅拷贝(Shallow Copy)
浅拷贝是创建一个新的对象,这个新对象有着原始对象属性值的一份精确拷贝。如果属性是基本数据类型(如int、float等),拷贝的就是值本身;但如果属性是引用类型(如对象、数组等),拷贝的就是内存地址,即引用本身,而不是引用的对象。因此,如果原始对象中的引用类型属性被修改了,那么浅拷贝得到的对象中的对应属性也会受到影响。
3. 深拷贝(Deep Copy)
深拷贝不仅创建了一个新的对象,而且递归地复制了原对象中的所有引用类型属性所指向的对象,直到这些属性都是基本数据类型为止。这样,深拷贝得到的新对象和原始对象在内存中是完全独立的,对原始对象的任何修改都不会影响到深拷贝得到的对象。
深拷贝和浅拷贝的区别
- 直接区别:浅拷贝是双方不是独立的,还会互相影响;深拷贝是不会影响到彼此,是独立的个体。
- 内在区别:浅拷贝只是简单地复制了引用地址,没有开辟新的栈,复制的结果是两个对象指向同一个地址;而深拷贝会开辟新的栈,确保两个对象对应两个不同的地址。