不太理解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;
}
}

解决方案 »

  1.   

    不太理解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; // 此x非彼x 
    }
      

  2.   

    楼主test x2中那个参数x能这样赋值吗 ,我怎么没见过 望楼上的讲解一下啊
      

  3.   

    to:miaoxiaodewo,一般情况下不可以这样赋值
    可能是我的问题没有没把我的问题表达清楚,真正困扰我的是:在TestX2中的赋值语句的后面,到底都做了什么?是不是函数的对象参数传递的只是引用,而且被调用的函数中无法改变传入参数引用的值?
      

  4.   

    你Test1里就可以改变,传入对象的值啊,Test2 中,你重新new了一个对象,指象新的地址,你把y的值赋给x,x是指向另一个地址,所以你传入的对象值不会改变
      

  5.   


     TextX2函数不会对传入的对象产生任何影响  参见:http://topic.csdn.net/u/20090523/21/c6c9028b-04de-4aef-8b9e-f63e8eb29864.html  有例子,也有内存存储图示