Java中浅拷贝和深拷贝

本文探讨了Java中拷贝的概念,强调了实现Clonable接口和重写clone()方法的重要性。浅拷贝创建的对象与原对象相同,包括引用类型字段,可能导致对象间的强关联。而深拷贝则在对象内嵌套其他对象时,确保修改不会影响原始对象。文中通过代码示例展示了深拷贝的必要性,特别是在对象中包含List、HashMap或其他自定义对象时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

拷贝的目的就是为了获得相同的对象,当需要属性值相同的对象时,不需要再重新一步一步创建

在Java中的拷贝需要实现Clonable接口,重写Object的clone()方法;同时在Java中的拷贝也分为浅拷贝和深拷贝,其两者的区别就在于对 对象中引用数据类型的不同处理方法。即:

浅拷贝就是克隆出来的新对象与原对象完全一致,包括引用类型字段的值。这就会有一个现象,针对引用类型的字段,两个对象的引用地址一致,如此一来新旧对象之间强关联,修改其中一个对象的内容,极可能影响到另外一个的内容,此时可以使用BeanUtils.copyProperties方法

深拷贝是针对浅拷贝而言的,当一个对象中套一个对象,对对象中的对象中的字段值进行修改时为了不影响原对象中的数据

例如如下的代码:
在这里插入图片描述
当对象中套list集合,集合入参为对象时

BondTradeReqVo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rsun04551

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值