java的浅拷贝与深拷贝区别

浅拷贝:
①对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递
②对于数据类型是引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等,那么浅拷贝会进行引用传递,将该成员变量的引用值(内存地址)复制一份给新的对象。

深拷贝:
如果一个类有一个对象,其成员变量中又有一个对象,该对象指向另一个对象,另一个对象又指向另一个对象,直到一个确定的实例。这就形成了对象图。
那么,对于深拷贝来说,不仅要复制对象的所有基本数据类型的成员变量值,还要为所有引用数据类型的成员变量申请存储空间,并复制每个引用数据类型成员变量所引用的对象,直到该对象可达的所有对象。
也就是说,对象进行深拷贝要对整个对象图进行拷贝!

区别:
而浅拷贝只是传递地址指向,新的对象并没有对引用数据类型创建内存空间。
深拷贝对引用数据类型的成员变量的对象图中所有的对象都开辟了内存空间;

 

 

参考:https://www.cnblogs.com/shakinghead/p/7651502.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值