Java 浅拷贝 深拷贝

Posted bearhoney

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 浅拷贝 深拷贝相关的知识,希望对你有一定的参考价值。

  1. 两者区别主要在于引用数据类型的属性,对于基本数据类型采用的是值传递,所以两者一样;
  2. 对于浅拷贝,引用数据类型只会进行引用传递,即复制一份引用值(内存地址)给新对象,一个对象的变化会影响到另一个的引用属性对象,两者同时变化,如:数组,对象等;
  3. 对于深拷贝,会给引用数据类型开辟新的内存空间,并且是逐级复制开辟父级的内存空间,以及父级的父级等等,直到该属性对象可达的所有对象;

 

  浅拷贝的实现方式:

  1. 构造方法传值;
  2. 重写clone()方法,方法体中调用super.clone()即可采用Object中的原clone方法;

 

  深拷贝的实现方式:

  1. 重写clone()方法,不同的是需要对每个对象进行深层复制,并开辟内存空间;

 

  

以上是关于Java 浅拷贝 深拷贝的主要内容,如果未能解决你的问题,请参考以下文章

Java浅拷贝深拷贝

Java中的深拷贝和浅拷贝(转载)

Java专题十九:浅拷贝与深拷贝

如何实现数组深拷贝和浅拷贝?

VUE开发 - 深拷贝与浅拷贝探讨

深拷贝与浅拷贝的实现(一)