clone

Clone

        Clone用来创建并返回此对象的一个副本。又分为浅层复制和深层复制。一般来说,对于任何对象x,如果表达式x.clone() != x是正确的,则表达式x.clone().getClass() == x.getClass()将是true,但这不是绝对条件。一般情况是,x.clone().equals(x)返回true。

对象的类型

         对象的类型有2种,一种是基础数据(如,char、int、double等)组成的,叫做primitive;另外一种就是引用类型,存储在堆上。

         在复制时,基础数据类型可以完全生成全新数据,与原数据相隔且相等。而引用对象就要复杂一些,复制的不是数据本身而是对数据的一个引用,即复制前后的2个对象使用的是同一个引用对象,他们各自拥有的只是对数据的引用。

         以上这些在参数类型时也可以通用。

      浅层复制

         对于引用类型在复制时,只是简单的复制了它们的引用。这样的复制就是浅层复制。这种复制是浅层的,复制后得到的对象没有完全与被复制对象隔离,修改其中一个还是会影响到另外一个。但是这里存在一种特例,就是引用类型是不可变的类型,比如String类型这种被fianl修饰的不可变类,修改时不会影响到其他对象,可以等同于基础数据类型。

深层复制

         深层复制就是将引用类型对应的对象,重新在堆中创建并返回对应的引用。需要引用对象也实现Cloneable接口,并在复制时同时复制引用对象。这样复制完成后的2个对象是完全相隔且相等的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值