理解Java中的深拷贝和浅拷贝

下面列表是Java中深拷贝和浅拷贝的区别

Shallow Copy Deep Copy
Cloned Object and original object are not 100% disjoint. Cloned Object and original object are 100% disjoint.
Any changes made to cloned object will be reflected in original object or vice versa. Any changes made to cloned object will not be reflected in original object or vice versa.
Default version of clone method creates the shallow copy of an object. To create the deep copy of an object, you have to override clone method.
Shallow copy is preferred if an object has only primitive fields. Deep copy is preferred if an object has references to other objects as fields.
Shallow copy is fast and also less expensive. Deep copy is slow and very expensive.

表格来源Difference Between Shallow Copy Vs Deep Copy In Java

浅拷贝 深拷贝
原对象和克隆对象并不是100%无关联 原对象和克隆对象100%无关联
对克隆对象的任何改变都会反映在原对象中,反之亦然 克隆对象的改变不会反映在原对象中,反之亦然
默认的clone()方法创建的是浅拷贝 要实现深拷贝,必须重写clone()方法
如果一个对象中字段只有基本类型,推荐浅拷贝 如果一个对象中字段存在其他对象的引用类型,推荐深拷贝
浅拷贝速度快,代价小 深拷贝相对较慢,代价大

通过实例理解浅拷贝和深拷贝TODO


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这篇文章主要翻译apple的官方文档和其他类似博文的学习记录 Copying Collections 概念 拷贝的...
    devZhang阅读 8,262评论 4 23
  • 1、对象拷贝有两种方式:浅复制和深复制。顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针;深复制是直接...
    滴答大阅读 4,174评论 0 2
  • 道歉 之前我的一篇关于深浅拷贝的文章,里面有诸多错误,主要是混淆了混淆copy、mutableCopy和深浅拷贝,...
    西木柚子阅读 8,439评论 20 46
  • 在以前的理解当中 copy 和 mutableCopy 对应的解释分别是 深拷贝 和 浅拷贝, 但是这样的理解是不...
    freemanIT阅读 2,750评论 0 0
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,778评论 0 6

友情链接更多精彩内容