java 深拷贝与浅拷贝的理解与实现

深拷贝和亲拷贝已经忘记无数次,每次要用的时候都需要重新去搜一次,所以决定自己写下来,下次忘记可以看,这篇文章参考https://www.cnblogs.com/shakinghead/p/7651502.html 如果要看详细版本,移步以上链接

值传递和引用传递

值传递: 复制一个新的值得到一个副本,给新的对象,在调用对象中的方法是均采用值传递的方式。由于是两个不一样的数据,当一个值改变时,将不会引起另一个值发生变化。
引用传递: 使用引用变量是将该变量的引用(地址)传递给新的对象,此时,两个对象将指向同一个实例,当变量发生改变时,两个对象中的值都会发生变化

浅拷贝

1.浅拷贝对象是指对所有基本数据类型进行复制,但是对于对象中的对象采用引用传递,使其指向相同的实例。
2.对于基本数据类型来说,拷贝将采用值传递的方式
3.对于引用数据类型数组,对象来说则采用的是引用传递的方式
4.对字符串(String)来说,字符串是常量,存储在内存池中,如果字符串A被赋给字符串B,而A发生改变,A将会指向新的字符串对象,而B的指向不变
5. 如何实现浅拷贝:
(1)构造方法实现
(2)重写clone()方法

深拷贝

1.深拷贝不仅仅对基本数据类型进行复制,而且对所有的对象图进行复制。对新对象中的所有对象都开辟了新的内存空间,所以 对其中一个对象的值进行改变,将不会影响到另一个对象
2.实现深拷贝的方法:
(1)对对象中的每一个对象都实现clone()方法
(2)对象序列化实现深拷贝

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值