java中深拷贝与浅拷贝。

java中队对象的拷贝分为深拷贝与浅拷贝。

平时我们使用的一半是浅拷贝

比如 Student s1 = new Student();

         Student s2 = s1;

这里 s2 = s1 ;就是浅 拷贝, 浅拷贝弊端不小 ,由于s1,和s2都是引用类型,指向的都是同一个对象,

如果改了s1和s2中一个的属性,另一个的属性也会跟着变化。

假如我们有这样一个需求, 一个方法,需要改变s1中的属性,但是方法结束之后,需要把s1恢复为原来的值。

这时浅拷贝就可能满足不了我们要求了。

这时就需要深拷贝了,深拷贝是完全复制一份与原对象完全一样的对象。

java Object 提供了一个方法 clone(),对象克隆,复制一份完全一样的对象。

Student s1 = new Student();

Student s2 = s1.clone();

这时s2和s1指向的对象不是同一个对象,但是对象的属性值相同。 hashcode()相同不相同就不知道了。

这时上面的需求就能轻易实现了。

Student s1 = new Student();

Student s2 = s1.clone();

changge(s1);

handle(s1);

s1 = s2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值