java 深克隆与浅克隆

今天再看ArrayList的clone时,看到了clone方法,但是是一个shallow clone,为啥是浅克隆呢,浅克隆跟深克隆有啥区别呢?

考证之后发现,这个确实跟C++的深拷贝和浅拷贝很相似

上测试代码:

 1   static class A{
 2         int a=0;
 3 
 4     }
 5     static class B implements Cloneable{
 6         A a;
 7         B(A a1){
 8             a=a1;
 9         }
10 
11         @Override
12         protected Object clone() throws CloneNotSupportedException {
13             return super.clone();
14         }
15     }
16 
17     public static void main(String[] args) throws CloneNotSupportedException {
18         B b=new B(new A());
19         B b1= (B) b.clone();
20         b1.a.a=2;
21         System.out.println(b1.a.a);
22         System.out.println(b.a.a);
23     }

运行结果如图:

 

这个就是浅克隆。即只对当前对象做一个副本,对象内部的复杂对象只做引用,其他的就不管了。任性,我服。

 

深克隆。就是连里面的复杂对象一块拷贝一个副本。这个就得自己写了。

 

转载于:https://www.cnblogs.com/akgang/p/6739935.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值