引用拷贝 浅拷贝 和 深拷贝

2022-01-14  本文已影响0人  大空翼123

引用拷贝:引用拷贝,就是拷贝引用地址。两个不同的引用指向同一个对象。

浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点)

如果属性是基本类型(int,double,long,boolean等),拷贝的就是基本类型的值

如果属性是引用类型,拷贝的就是内存地址(即复制引用但不复制引用的对象)

注:String类型通过常量赋值时相当于基本数据类型,由于String为不可变对象,是无法修改原String的状态的,其会生成一个新的String对象

深拷贝 :深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。

案例:

实现浅拷贝

在需要拷贝的类上实现 Cloneable 接口,并重写 clone() 方法。实现很简单,直接调用的是父类 Object 的 clone() 方法。

使用的时候调用实现类的clone方法

ProsonB对象ProsonA的拷贝     对象A修改基础数据类型age的修改互不影响,对象A引用类型 Address  修改后是会有影响的

实现深拷贝

对 Person 类的 clone() 方法进行修改,连带着要把 Person 对象内部的 Address 对象一起复制。

深拷贝后,不管是基础数据类型还是引用类型的成员变量,修改其值都不会相互造成影响

上一篇下一篇

猜你喜欢

热点阅读