Java克隆学习记录

1、为什么要学习克隆?

在开发中,我们往往需要在一个对象发生改变前,记录其原始状态。这个时候,你可能会想到如:Object a = new Object(); Object b = a;的形式。但是这样随着a的变化,临时对象b也会发生变化,做不到我们想要的记录对象变化之前的状态。这个时候我们就需要clone方法了,或许你在此处你有会提出疑问:我们为什么不创建一个临时对象,然后把对象的属性逐一复制给临时变量呢?这样也可以满足我们的要求啊!确实这样的方式能满足要求,但是由于clone方法时native修饰的方法,表明其调用的是系统底层的方法,其效率更快。

2、克隆和引用复制的区别?

引用复制 eg:Object a = new Object(); Object b = a; 是两对象引用同一堆栈地址,其中一个对象修改了属性,其另一个对象的属性会同时变化,因为两对象实际存储是同一对象的堆栈引用地址。
克隆 Object a = new Object(); Object b= a.clone(); 两对象堆栈地址不一样,a == b 会返回false。

3、Object克隆的原理?

4、要用克隆为什么一定要实现Cloneable接口?实现了接口一定要将重写clone()方法为public?

5、如果实现深克隆?

6、数组为什么有一个public的clone()方法?是深克隆吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值