让一个对象=另一个对象,修改一个对象的值,如何不影响另一个的值
2012-08-02 22:00
525 查看
我有一个自己作的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了。
不知道我这个解释你能不能明白。其实上面几位都解释得很正确了。
但是,当我用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了。
不知道我这个解释你能不能明白。其实上面几位都解释得很正确了。
相关文章推荐
- 相等的两个对象其中一个属性值修改,会影响另一个值;解决方法
- 在map组成的List中发现修改一个map中的key-value,会影响導另一个
- Spring中如何获取和重置一个BeanFactory对象?或者说,如何动态修改Hibernate Configuration?
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
- for循环一个list,元素赋值给另一个对象,修改另一个对象,竟然可以修改list
- 一个类的对象作为另一个类的数据成员时如何构造函数
- 【SqlServer】如何实现用一个表中的数据修改另一个表中的数据?
- 如何将一个对象的属性值付给另一个对象
- 如何访问和修改一个对象的私有属性
- oracle 如何把一个用户的对象授权给另一个用户
- JS如何封装一些列方法为一个对象的操作,然后集中管理这些操作,方便修改和调用
- 如何将UI对象的一个物体作为另一个物体的子物体?
- 如何构建一个名字成员在类外可以被修改而在内部是只读的对象
- 关于“如何做到在一个类内不通过创建另一个类的对象,却调用另一个类的方法”的问题
- 如何把一个用户下面的表和其他对象,一次性导入到另一个用户中去???也就是拷贝一份到另一个用户中。
- jQuery如何增加、修改、删除一个jQuery对象的class类
- 如何编程修改一个隶属于视图的对象颜色
- jSON学习拓展:如何把一个json对象赋值给另一个json数组?
- C#如何将一个DataTable中满足条件的数据导入另一个DataTable
- 一个表有两个外键指向另一个表的主键:如何区分显示