什么是浅拷贝和深拷贝?

在Java中,除了基本数据类型之外,还存在类的实例对象这个引用数据类型,而一般使用 “=”号做赋值操作的时候,对于基本数据类型,实际上是拷贝的它的值;但是对于对象而言,其实赋值的只是这个对象的引用,将原对象的引用(内存地址)传递过去,他们实际还是指向的同一个对象。

而浅拷贝和深拷贝就是在这个基础上做的区分。如果在拷贝这个对象的时候,只对基本数据类型进行了拷贝,而对引用数据类型只是进行引用(内存地址)的传递,而没有真实的创建一个新的对象,则认为是浅拷贝。反之,在对引用数据类型进行拷贝的时候,创建了一个新的对象,并且复制其内的成员变量,则认为是深拷贝

简单来说:

  • 浅拷贝:对基本数据类型采用值传递,对引用数据类型采用引用传递的拷贝,为浅拷贝
  • 深拷贝: 对基本数据类型采用值传递,对引用数据类型的拷贝,是创建一个新的对象,并复制其内容,为深拷贝
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,572评论 1 32
  • 浅拷贝: 浅拷贝就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间.注意:当内存销毁的时候,指向对象的...
    js_huh阅读 2,212评论 0 1
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 3,074评论 2 9
  • 介绍 开发过程中,有时会遇到把现有的一个对象的所有成员属性拷贝给另一个对象的需求。比如说对象 A 和对象 B,二者...
    安静的蓝孩子阅读 74,948评论 12 61
  • 一、孩子的注意力要想形成良好的集中性,就必须要实现孩子针对某一类信息的采集、整理和储存过程中实现自我的主动性。 二...
    2131cc789eb5阅读 187评论 0 3

友情链接更多精彩内容