美文网首页
引用拷贝 浅拷贝 和 深拷贝

引用拷贝 浅拷贝 和 深拷贝

作者: 大空翼123 | 来源:发表于2022-01-14 21:16 被阅读0次

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

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

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

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

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

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

    案例:

    实现浅拷贝

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

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

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

    实现深拷贝

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

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

    相关文章

      网友评论

          本文标题:引用拷贝 浅拷贝 和 深拷贝

          本文链接:https://www.haomeiwen.com/subject/uxvncrtx.html