简述Java中的深拷贝与浅拷贝

326 阅读1分钟

Java中clone方式是浅拷贝,如果想实现深拷贝,需要继承clonable接口,重写clone方法

  • 浅拷贝:使用一个已知实例对新创建实例的成员逐个赋值;
  • 深拷贝: 当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值。

即浅拷贝只复制一个对象,传递引用,不能复制实例。 而深拷贝对对象内部的引用均进行对象构建并赋值。

对于浅拷贝当对象的成员变量是基本数据类型时,两个对象的成员变量已有存储空间,赋值运算传递值,所以浅拷贝能够复制实例。但是当对象的成员变量是引用数据类型时,就不能实现对象的复制了。

转自:简述Java中的深拷贝与浅拷贝,C++中的浅拷贝和深拷贝https://my.oschina.net/134596/blog/1807437