Java 浅拷贝与深拷贝

浅拷贝

浅拷贝的对象, 对于基本数据类型, 拷贝值, 而引用变量和包装类型只拷贝内存地址. 改变其中一个引用变量内的属性会影响到另外一个对象.
Java中从Object中继承的clone()方法默认实现的是浅拷贝.

浅拷贝模型

深拷贝

深拷贝的对象, 所有引用变量都与原对象指向不同的内存地址, 但内容完全相同. 改变引用对象内容不影响另一个.

深拷贝模型

如何实现?

  • 将可拷贝对象实现接口Cloneable, 重写clone()接口
  • 浅拷贝对象, 直接调用super.clone()
  • 深拷贝对象, 需要我们自定义如何实现.
    比如Person里面有一个嵌套属性spouse, 则需要重新new一个Person类, 将旧对象spouse属性中的值赋予新spouse, 这样返回的spouse不会是同一个引用地址.
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 说深浅拷贝前我们先了解一下java的数据类型包括:基本数据类型和引用数据类型其中基本数据类型有:short,cha...
    醉枫浅墨阅读 460评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 拷贝的定义 和new对象过程相似,拷贝(clone)后是独立的对象,与引用的复制或者称为引用的拷贝区分开来。 引用...
    Sophie12138阅读 290评论 0 0
  • 深拷贝和浅拷贝这个问题在面试中常常被问到,而在实际开发中,只要稍有不慎,就会在这里出现问题。尤其对于初学者来说,我...
    西门淋雨阅读 1,836评论 0 1
  • 生活一点都不温柔 别做梦了,电影里面的生活,不会出现在你身上。 才上班实习几个星期,却有一种假如这辈子就这样了的惶...
    吕小布_bdce阅读 291评论 0 0