日期:2014-05-20  浏览次数:20929 次

新人请教贴,关于this.x=x和x=x的问题
主程序代码如下
class Foo
{
  private int x;
  public Foo(int x){this.x=x; }
  public void.setX(int x){ this.x=x; }
  public int getX(){ return x; }
}
public class T{
  static Foo fooBar(Foo foo){
  foo.setX(100);
  return foo;

  }
  public static void main(String []args){
  Foo foo=new Foo(300);
  System.out.print(foo.getX()+"-");
  Foo fooFoo= fooBar(foo);
  System.out.print(foo.getX()+"-");
  System.out.print(fooFoo.get()+"-");
  foo=fooBar(fooFoo);
  System.out.print(foo.getX()+"-");
  System.out.print(fooFoo.getX());
   
  }

}
输出结果是“300-100-100-100”,这个我能理解,但为什么将this.x=x换成x=x,就会变成“0-100-100-100”
将X=X不只是一个初始化X的初值么?怎么不能在第一次输出时付值300呢? 希望各位前辈赐教。谢谢!

------解决方案--------------------
x=x那是传入参数的拷贝=传入参数的值,没有赋值给成员x,那么默认int类型的成员初始化值为0。所以如果你只改了构造函数的话,那么是0-100-100-100-100,如果两个都改了,那么是0-0-0-0-0.
------解决方案--------------------
探讨
x=x那是传入参数的拷贝=传入参数的值,没有赋值给成员x,那么默认int类型的成员初始化值为0。所以如果你只改了构造函数的话,那么是0-100-100-100-100,如果两个都改了,那么是0-0-0-0-0.

------解决方案--------------------
探讨

x = x,自己给自己赋值,等于啥都没干,成员变量永远是初始值