java深浅拷贝

//序列化方法实现深拷贝       
        ByteArrayOutputStream bos=new ByteArrayOutputStream();
        ObjectOutputStream oos=new ObjectOutputStream(bos);
        oos.writeObject(stu1);
        oos.flush();
        ObjectInputStream ois=new ObjectInputStream(new 
        ByteArrayInputStream(bos.toByteArray()));
        Student stu2=(Student)ois.readObject();

1. 关于浅拷贝

    成员都是复制引用,而自身则是一个新的对象,就是“新壶装旧酒”。

  可以看看Object类里关于clone方法的注释。

2. 关于深拷贝

     深拷贝里还是回调用父类的clone方法,这是为啥呢,个人觉得这是一种讨巧的方法。两个原因:一是因为实际上的深拷贝是最终会落地到基础类型,而我们所说的深拷贝就不是真正意义上的深拷贝。既然如此,调用了super.clone方法后,对于部分只需要复制引用的成员变量我们就不用管了。二是因为如果成员变量很多,我们得一个一个写还可能忘了,所以如此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值