Java中的假克隆、浅克隆、深克隆

      Java中的克隆值的是对象的克隆,是指在堆空间中复制一块儿内存,是完全相同的两个对象。需要通过实现接口Cloneable或者是通过序列化等方式来实现。

      假克隆是指对象的赋值,仅仅代表指针指向的改变,而不会创建新的内存单元。如下:

Employee employee1 = new Employee();// 创建Employee对象employee1

Employee employee2 = employee1; // 将employee1赋值给employee2

      而浅克隆是指在在克隆的过程中,仅仅克隆对象的基本数据类型。而对于对象内部的嵌套对象,也称为引用类型,则不能实现克隆。比如说,首先定义一个地址类:

public class Address {}

      然后在定义一个实现了cloneable接口的employee类,在employee类中实现了对address类的引用:

public class Employee implements Cloneable {}

      最后再进行对象创建:

Address address = new Address("中国", "吉林", "长春");// 创建address对象

Employee employee1 = new Employee("张XX", 30, address);// 创建employee1对象

Employee employee2 = employee1.clone();// 使用克隆创建employee2对象

      此时就实现了浅克隆。


      深度克隆是指在克隆的过程中,不仅实现克隆对象的基本数据类型,而且对于其引用类型也可以克隆。如下,首先定义一个地址类,这个类实现了接口cloneable,

public class Address implements Cloneable {}

      其次定义一个employee类,同样的实现了cloneable接口,同时在employee类中实现了对address类的引用。

public class Employee implements Cloneable {}
      最受进行对象创建:

Address address = new Address("中国", "吉林", "长春");// 创建address对象

Employee employee1 = new Employee("张XX", 30, address);// 创建employee1对象

Employee employee2 = employee1.clone();// 使用克隆创建employee2对象
      此时就实现了深度克隆。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值