美文网首页
(13)Java深浅拷贝

(13)Java深浅拷贝

作者: hedgehog1112 | 来源:发表于2020-12-11 22:30 被阅读0次

引用拷贝(一个人,不同名字)

浅拷贝(双胞胎):创建对象,将目标对象内容复制过来,不直接拷贝引用

深拷贝:全独立原对象,拷贝数据类型时,创建新对象,复制成员变量

一、引用拷贝

生成新对象引用地址,最终指向同一对象。不同场合、叫法不同,但我们很清楚哪些名称"我"

二、浅拷贝

创建对象,将目标对象内容复制过来,不直接拷贝引用

创建新对象,和原对象不等,但属性相同。区别:

    如属性是基本类型(int,double,long,boolean),拷贝基本类型

    如果属性是引用类型,拷贝的就是内存地址(即复制引用复制引用的对象) ,如对象改变地址影响另一对象

浅拷贝实现

类上实现Cloneable接口重写clone()

双胞胎一样,两个人,样貌、各种关系(父母亲人)都相同的。name初始==相等,s1.name="son222" 改变引用指向

三、深拷贝(重写clone   序列化)

全独立原对象。深拷贝:拷贝数据类型时,创建新对象,复制成员变量

实现深拷贝提供,重写clone()方法和序列法。

1、重写clone()

自定义引用变量类去实现Cloneable接口实现clone()。字符类创建新字符串实现拷贝

Father实现Cloneable接口并重写clone()。son的clone()对各个引用都拷贝一遍

2、序列化

如果引用数量或层数太多,怎么办呢?

序列化后:将二进制字节流内容媒介(文本或字节数组),拷贝给clone对象,从媒介读,原对象修改不影响clone对象(从媒介读)

    序列化:Java对象缓存Redis中(字节流或json串),对象属性,不存对象内存地址

    反序列化:从Redis中读取生成Java对象,重新创建所有引用对象

自定义类实现Serializable接口。深拷贝类(Son)定义函数,返回该类对象

https://mp.weixin.qq.com/s/kmD6FKJ5fwLUr64DonZf-A

相关文章

  • (13)Java深浅拷贝

    引用拷贝(一个人,不同名字) 浅拷贝(双胞胎):创建对象,将目标对象内容复制过来,不直接拷贝引用 深拷贝:全独立原...

  • Java深浅拷贝

    浅拷贝 浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象 输出结果 两个引用student1和student2指...

  • Java 深浅拷贝

    浅拷贝定义: 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的...

  • Java 最近遇到的面试题

    JAVA 基础 java 对象拷贝深浅拷贝 对象何时进入老年代 Minor GC 和 Full GC 有什么不同 ...

  • Java之深浅拷贝

    Java之深浅拷贝 基本类型:拷贝数据的值其他类型:拷贝地址的引用,拷贝出的新对象与原对象共享实例变量,不受访问权...

  • 2018-08-29

    深浅拷贝 1.根据拷贝内容的不同,分为深浅拷贝 深拷贝:内容...

  • Java中创建对象的方式

    一:Java中创建对象的方式 示例 注:同步更新于CreateObjectTest 二:Java的深浅拷贝 三:如...

  • js的深浅拷贝

    js的深浅拷贝可以分为数组的深浅拷贝和对象的深浅拷贝 一、数组的深浅拷贝如果只是简单的将数组中的元素付给另外一个数...

  • Python—浅拷贝与深拷贝

    浅拷贝 深拷贝 深浅拷贝的作用

  • 深浅拷贝

    先来了解一下这些:在js中变量类型基本分为两种:基本数据类型和引用数据类型;基本类型:Underfied Null...

网友评论

      本文标题:(13)Java深浅拷贝

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