java 对象参数传递与对象复制
2010-08-05 10:33
232 查看
今天写一个java的方法,方法中有的参数是两个Map对象。目的是求这两个Map的所有不同的元素的集合。结果到回到主方法输出时,大的集合Map对象被修改了。这是我不希望的。因为下面我还要用这个对象进行操作。
经过查询,java原来有两种传递参数方式。1.传值 2.传引用 。对于简单类型的参数,如int ,string等,java用传值方式。对于对象,java用传引用的方式。所以前面的那个方法中的对象参数,传过去的是引用。所以该对象如果在方法中被修改,外面的引用的这个对修也被修改。其实java对象名,只是保存着这个对象的地址。
接下来,为了不使这个参数在方法中的修改也影响到外面。所以想到了对象复制,clone。就算新建一个对象,用等号赋值,那个对象名还引用的是同一个对象。所以必须用Clone。Map没有这个方法。但是Map有putAll().它把一个Map的所有元素全部复制到另一个Map中。HashMap 有clone方法。 所以我有这两种办法解决这个问题。
经过查询,java原来有两种传递参数方式。1.传值 2.传引用 。对于简单类型的参数,如int ,string等,java用传值方式。对于对象,java用传引用的方式。所以前面的那个方法中的对象参数,传过去的是引用。所以该对象如果在方法中被修改,外面的引用的这个对修也被修改。其实java对象名,只是保存着这个对象的地址。
接下来,为了不使这个参数在方法中的修改也影响到外面。所以想到了对象复制,clone。就算新建一个对象,用等号赋值,那个对象名还引用的是同一个对象。所以必须用Clone。Map没有这个方法。但是Map有putAll().它把一个Map的所有元素全部复制到另一个Map中。HashMap 有clone方法。 所以我有这两种办法解决这个问题。
相关文章推荐
- php对象当参数传递 && php深复制和浅复制
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- Java中的参数传递与对象Clone详细讲解
- java 参数传递 空对象 null
- Java面向对象【经典案例】Java 只有一种参数参数传递规则: 基于值的传递!
- Java可变参数传递中可以接收多个对象
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
- 转: 用”堆栈区数据复制”理解Java赋值和参数传递机制的心得
- java对象与引用及参数传递
- Java中接口对象作为参数传递
- JAVA本地方法调用(3)对象参数传递
- 关于Java对象作为参数传递是传值还是传引用的问题
- 用”堆栈区数据复制”理解Java赋值和参数传递机制的心得
- [Java] Java参数传递,究竟值传递还是引用对象(转)
- java面试题解惑:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 面向对象语言(如Java)中:基本类型与对象在存储和参数传递上的区别
- JavaScript参数传递和对象复制
- Java传递基本类型:值传递,对象作为参数:引用传递
- java 18:给方法传递对象参数,对象数组
- java调用(axis2)WebService传递对象类型参数(源码)