【JVM与内存调优】浅拷贝、深拷贝、浅复制、深复制傻傻分不清楚

本文详细介绍了Java中的浅拷贝和深拷贝概念,包括它们的区别以及实现方式。浅拷贝增加了指针指向原有内存地址,而深拷贝则创建了新对象并复制所有变量。在Java中,可以通过实现Cloneable接口和重写clone()方法进行深拷贝。此外,还讨论了Object.assign()、JSON.parse(JSON.stringify())、递归方法等在不同场景下的深拷贝实现。

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

浅拷贝(shallowCopy)

只是增加了一个指针指向已存在的内存地址
深拷贝(deepCopy)

是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存

1.浅拷贝只是增加了一个指针指向已经存在的内存。

2.深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存。

3.采用深拷贝的情况下,释放内存的时候就不会出现在浅拷贝时重复释放同一内存的错误。

二,浅拷贝的实现方式

1,concat、slice用于对包含引用对象的一维数组的浅拷贝

2,Object.assign()

三,深拷贝的实现方式

1,JSON.parse(JSON.stringify())

2,手写递归方法

3,函数库lodash的cloneDeep方法

4,slice和concat这两个方法,仅适用于对不包含引用对象的一维数组的深拷贝

浅复制:被复制对象的所有变量都含有原来对象的相同值,而所有对其他对象的引用仍然指向原来的对象。换句话说就是,浅复制至复制他所考虑的对象(也就是基本数据类型),不复制他所引用的对象(其他对象)。
深复制:被复制对象的所有变量都含有与原来对象相同的值,那些引用其他对象的变量指向复制的新对象,而不再是原有的那些被引用的对象,换而言之,深复制吧复制的对象所引用的对象都复制了一遍。
深复制和浅复制都是由clone方法实现的。

Java中的所有类都继承Object类,而Object类提供了一个clone()方法。这个方法的作用是返回一个Object对象的复制。这个复制函数返回的是一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

本本本添哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值