Java -克隆实现方式 深克隆与浅克隆

本文介绍了Java中的克隆概念,包括浅克隆和深克隆的区别。浅克隆只复制对象本身,而不复制引用的对象,而深克隆会递归复制所有引用的对象。文章提到了实现深克隆的两种方法:覆盖`clone()`方法和使用序列化。对于含有多层引用的对象,序列化是一种有效的深克隆解决方案,虽然相对消耗更多内存,但能确保所有层级的对象都被正确克隆。
摘要由CSDN通过智能技术生成
快速介绍克隆

克隆从字面上看就是复制嘛,我们平时复制一个值类型数据直接复制就好了,但是复制一个引用类型比如对象的时候就无从下手了,因为赋值只能赋引用,而如果手动操作把里面的值取出赋给新对象又太麻烦耗时了,有没有好办法?java提供了clone。


克隆类型

在Java语言中,数据类型分为值类型(基本数据类型)和引用类型,值类型包括int、double、byte、boolean、char等简单数据类型,引用类型包括类、接口、数组等复杂类型。浅克隆和深克隆的主要区别在于潜克隆复制的时候如果是值类型则直接克隆,而如果是引用类型则不会克隆对象引用的对象,而只是简单地复制这个引用。也就是说如果修改克隆后的对象中的引用类型数据,原对象中也会更改,因为都是指向同一个内存。而深克隆则都会克隆。

浅克隆
1. 被复制的类需要实现Clonenable接口, 该接口为标记接口(不含任何方法)
2. 覆盖clone()方法,访问修饰符设为public。方法中调用super.clone()方法得到需要的复制对象。
3. 将得到的复制对象返回

class Student implements Cloneable{
     
    private int number;  

    public int getNumber() {  
        return number;  
    }  

    public void setNumber(int number) {  
        this.number = number;  
    }  

    @Override  
    public Object clone() {  
        Student stu = null;  
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值