一、深拷贝
将对象属性值复制到新对象上。即使属性是复制类,也会把类里的属性值复制出来。
实现:剥洋葱,一层一层的往里查,根据地址查到对应内容,若内容为引用地址,就需要再根据地址查内容。
二、浅拷贝
将对象的属性复制到新对象上,若是一个复杂类,只获取引用地址,不根据地址再查存的内容。
三、值传递
将一个内存单元的实际内容值复制给新对象,并初始化新对象,是两个存储单元有着同一个内容,但互不影响
四、值引用(一个引用地址,修改相当于调用原对象set)
将一个内存单元的引用地址复制给新对象,两个存储单元都是对同一个地址的内容进行操作,会出现一改全改的情况。
五、BeanUtils.copyProperties的浅拷贝
当拷贝内容是基本类型(直接值),获取的是值;值引用
当拷贝内容是复杂属性(引用地址->实际存储内容),获取的是引用地址;值传递
故BeanUtils.copyProperties是浅拷贝。
六、浅拷贝影响
因为浅拷贝是值传递,一改全改,在想修改复制对象属性时,原对象也会被修改。