this的问题
class cy{
int x,y;
cy(int a,int b)
{
x=a;
y=b;
}
void output(int x,int y)
{
x=x;
y=y;
System.out.println("x"+x);
System.out.println("y"+y);
}
void output()
{
System.out.println(this.x);
System.out.println(this.y);
}
public static void main(String[] args)
{
cy pt=new cy(5,5);
pt.output(6,6);
pt.output();
}
}
我觉得输出是
x6
y6
6
6
啊,结果跟我想的不一样,希望有人指点下。
----------------解决方案--------------------------------------------------------
你想的是什么啊
----------------解决方案--------------------------------------------------------
如果,
public void output(int x, int y) {
x = x;
y = y;
System.out.println("x" + x);
System.out.println("y" + y);
}
那你的code最后输出就会是:
x6
y6
5
5
如果你的code是:
public void output(int x, int y) {
x = this.x;
y = this.y;
System.out.println("x" + x);
System.out.println("y" + y);
}
那你的code最后输出就会是:
x5
y5
5
5
----------------解决方案--------------------------------------------------------
这就是用this 指针与不用的区别吗?
----------------解决方案--------------------------------------------------------
应该是。
----------------解决方案--------------------------------------------------------
回复 3楼 luocb1980
y=this.y; this.y=y;x=this.x;应该改为: this.x=x;吧?!!!
y、x是参数,不能放在前面的 。
[ 本帖最后由 tmaceye 于 2010-11-11 12:37 编辑 ]
----------------解决方案--------------------------------------------------------
class cy
{
int x,y;
cy(int a,int b)
{
x=a;
y=b;
}
void output(int x,int y)
{
this.x=x;
this.y=y;
System.out.println("x"+x);
System.out.println("y"+y);
}
void output()
{
System.out.println(this.x);
System.out.println(this.y);
}
public static void main(String[] args)
{
cy pt=new cy(5,5);
pt.output(6,6);
pt.output();
}
}
加了this.x是取对象中的x,如何不加的当参数出现与类中属性同名的情况,也就是你这种,x会取最近的那一个,并不会取远的x(属性那个)
就是参数变量x=x自已本身,豪无意义!
----------------解决方案--------------------------------------------------------
this其实你用十进制输出就知,它是个地址而已。那个地址有啥,就引用啥。不加this的,就只用当前存在的。当前不存在,就找全局的,就这么简单。
----------------解决方案--------------------------------------------------------
这个是作用域的问题。
void output(int x,int y)
{
x=x;
y=y;
System.out.println("x"+x);
System.out.println("y"+y);
}
其实 x=x; 可以看成是 自己=自己 ;并没有改变别人
建议多去了解一下 作用域
----------------解决方案--------------------------------------------------------
行参和成员变量同名了,把形参x,y改为a,b就行了
----------------解决方案--------------------------------------------------------