博客
关于我
请你谈谈Java中的深拷贝与浅拷贝?
阅读量:525 次
发布时间:2019-03-08

本文共 475 字,大约阅读时间需要 1 分钟。

数据类型在编程中主要分为基础数据类型和引用数据类型。基础数据类型的变量直接存储在栈中,而引用数据类型的变量则存储的是对象在堆中的内存地址,真正的对象数据则位于堆内存中。

浅拷贝和深拷贝是对象复制时常用的技术。浅拷贝对基础数据类型的操作较为简单,直接复制数据值。而对引用数据类型,浅拷贝只复制对象的引用地址,这意味着新旧复制的对象其实指向同一个内存地址,若一个对象的属性发生改变,另一个对象也会相应改变,这种方式是实现浅拷贝最常见的方式。

深拷贝则在复制引用对象时,会创建一个全新的对象,并将新对象的各个属性分别复制到新对象中。这样,新旧对象之间不会共享内存,各自独立。需要注意的是,深拷贝的实现通常比浅拷贝更费时,因为需要额外申请内存并复制数据。

在Java中,深拷贝的实现方法通常是实现序列化接口,然后通过自定义的深拷贝方法来实现。通过将对象序列化为二进制流,再反序列化得到新对象,这种方式既保证了深拷贝的效果,又避免了直接操作内存的复杂性。常见的深拷贝实现方式包括使用自定义的克隆方法或利用Cloneable接口,结合序列化机制来实现深拷贝操作。

转载地址:http://qkrnz.baihongyu.com/

你可能感兴趣的文章
ViewHolder的改进写法
查看>>
Orderer节点启动报错解决方案:Not bootstrapping because of 3 existing channels
查看>>
org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement profile
查看>>
sql查询中 查询字段数据类型 int 与 String 出现问题
查看>>
org.apache.commons.beanutils.BasicDynaBean cannot be cast to ...
查看>>
org.apache.dubbo.common.serialize.SerializationException: com.alibaba.fastjson2.JSONException: not s
查看>>
sqlserver学习笔记(三)—— 为数据库添加新的用户
查看>>
org.apache.http.conn.HttpHostConnectException: Connection to refused
查看>>
org.apache.ibatis.binding.BindingException: Invalid bound statement错误一例
查看>>
org.apache.ibatis.exceptions.PersistenceException:
查看>>
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned
查看>>
org.apache.ibatis.type.TypeException: Could not resolve type alias 'xxxx'异常
查看>>
org.apache.poi.hssf.util.Region
查看>>
org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
查看>>
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /
查看>>
org.hibernate.HibernateException: Unable to get the default Bean Validation factory
查看>>
org.hibernate.ObjectNotFoundException: No row with the given identifier exists:
查看>>
org.springframework.boot:spring boot maven plugin丢失---SpringCloud Alibaba_若依微服务框架改造_--工作笔记012
查看>>
SQL-CLR 类型映射 (LINQ to SQL)
查看>>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
查看>>