什么是深拷贝和浅拷贝?
在计算机内存中,每个对象都有一个地址,这个地址指向对象在内存中存储的位置,当我们使用变量引用一个对象时,实际上是将该对象的地址赋值给变量。因此,如果我们将一个对象复制到另一个变量中,实际上是将对象的地址复制到了这个变量中。
什么是浅拷贝?
浅拷贝是指将一个对象复制到另一个变量中,但是只复制对象的地址,而不是对象本身。也就是说,原始对象和复制对象实际上是共享同一个内存地址的。 因此,如果我们修改了对象中的属性或元素,原始对象中对应的属性或元素也会对应被修改。
在Java中,我们常用的BeanUtils基本也都是浅拷贝的。
什么是深拷贝?
深拷贝是指将一个对象及其所有子对象都复制到另一个变量中,也就是说,它会创建一个全新的对象,并将原始对象中的所有属性或元素都复制到新创建的对象中。 因此,如果我们修改复制对象中的属性或元素,原始对象中对应的属性或元素不会受到影响。