新人请教贴,关于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,自己给自己赋值,等于啥都没干,成员变量永远是初始值