public class ObjArgument {
public static void main(String[] args) {
// TODO Auto-generated method stub
TestObject temp=new TestObject(3);
TestObject temp1=new TestObject(4);
modifyObj(temp,temp1);
System.out.println("original obj value is not changed: "+temp.a);
}
public static void modifyObj(TestObject obj,TestObject obj1){
obj=obj1;
System.out.println("changed reference in func : "+obj.a);
obj.modifyValue(10);
System.out.println("changed obj in func :" + obj.a);
}
}
<pre name="code" class="java">public class TestObject {
public int a;
public TestObject(int value){
this.a=value;
}
public void modifyValue(int value) {
// TODO Auto-generated method stub
this.a=value;
}
}
程序输出如下:
changed reference in func : 4
changed obj in func :10
original obj value is not changed: 3
总结
把对象传递给函数时,传递的是对象的引用,通过引用去修改对象的值,实参对象也会随之改变;
如果在函数中修改引用(引用到另外的对象), 函数中的引用和实参就指向不同的对象,再通过引用修改对象,就是修改的其他对象的内容,而不是实参对象的内容。