java中的浅复制与深复制

在java中存在浅复制与深复制这样的两个概念!

实际浅复制即是对同一个对象的同一份引用,例如使用:

 int [ ] a = new int [ ]{1,12,45} ;

 int [ ] b = a;

 即a与b指向同一个对象,对b进行操作将引起a对象的改变!该方式为浅复制,对于基本数据类型该方式是可以行通的,如:

int a = 12;

int b = a;

b = 14;

对b的赋值操作不影响a的值。

而对于引用类型该复制方式不可以,需要重写clone()方法,对于String类型也一样,然而String类型不需显式地重写clone()方法。

对于其他方法均需重写clone()方法,在clone()方法中,调用super.clone();该方法在程序编译时自动识别你需要复制的类型,然后分配该类型的内存空间,然后复制一份为object型的对象,可通过强制类型转换使得其转换为所需复制对象类型。使用该方法复制为深复制,对复制对象的修改不会对原始对象产生影响。

因为此种复制方式在内存中为新对象重新分配了一份与原始对象一般的空间,并将原始对象的一份拷贝存放其中,所以对复制对象的操作只是对其独自进行的操作,不影响到原始对象。

今天学习的一点小东西,呵呵...

记录一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值