让一个对象=另一个对象,修改一个对象的值,如何不影响另一个的值

本文探讨了在编程中使用类实例时,如何正确地将一个类实例赋值给另一个实例,并强调了使用克隆的重要性以避免意外的数据共享问题。通过类比房间钥匙的例子,解释了原始实例与新实例之间的关系,并提供了使用类实例克隆的方法来确保数据的独立性和安全性。

我有一个自己作的class(LinkedStack),然后声明了两个对象LinkedStack temp = new LinkedStack();LinkedStack Path。

但是,当我用temp = Path;把path的值给了temp以后;我对temp进行一些删除,但是path里面的值也没了。

请问如何把path的值赋给temp,但是修改temp的时候不影响path。


答案:定义的每一个类都是引用类型,当一个实例复制给另一个实例的时候,就是你的temp=path,实际上是把path所指向的内存地址空间传递给了temp,所以当temp进行操作改变的时候,path也就发生了改变,因为两个变量好比一个房间的两把钥匙,无论谁用钥匙进去改变了房间中的物品,然后用另外一把钥匙进去看到的肯定是改变后的房间。

所以,对于引用类型,就要使用克隆赋值,即temp=path.clone();它标志着按照path所指向的地址房间,重新建造了一个一模一样的房间,并把钥匙给了temp。假设原来的path所指向的地址是1000000,那么temp就可能为1010000了。
不知道我这个解释你能不能明白。其实上面几位都解释得很正确了。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值