不太理解TestX1与TestX2两个函数 结果造成的差异,能否有人给解释一下.TestX1(X x)
{
x.setName("new name1");
x.setAge(11);
}TestX2(X x)
{
X y = new X();
y.setName("new name2");
y.setAge(12);
x = y;
}class X {
private String name;
private int age; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}
{
x.setName("new name1");
x.setAge(11);
}TestX2(X x)
{
X y = new X();
y.setName("new name2");
y.setAge(12);
x = y;
}class X {
private String name;
private int age; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}
{
x.setName("new name1");
x.setAge(11);
} // 在原对象上操作TestX2(X x)
{
X y = new X();
y.setName("new name2");
y.setAge(12);
x = y; // 此x非彼x
}
可能是我的问题没有没把我的问题表达清楚,真正困扰我的是:在TestX2中的赋值语句的后面,到底都做了什么?是不是函数的对象参数传递的只是引用,而且被调用的函数中无法改变传入参数引用的值?
TextX2函数不会对传入的对象产生任何影响 参见:http://topic.csdn.net/u/20090523/21/c6c9028b-04de-4aef-8b9e-f63e8eb29864.html 有例子,也有内存存储图示