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

这个构造函数无法赋值····
如果变量不能这样定义也应该在编译的时候出现错误,但是编译没错····但是,运行的结果不对,请问是什么原因 请教大侠····
class Point{
private double x,y;
Point (double x,double y){
x = x;
y = y;
}
public double getX(){
return x;
}
public double getY(){
return y;
}
}
public class TestError{
public static void main(String args[]){
Point p = new Point(2.5,3.6);
System.out.println(p.getX());
System.out.println(p.getY());
}
}
以下是运行结果:
0.0
0.0
到底是什么原因??

------解决方案--------------------
Java在方法里 如果有[color=#FF0000]参数名跟成员变量名相同[/color] 的时候:
当你使用的它就会按就近原则,认为你是在操作参数而不是成员变量
比如你写的
x = x; 它会认为你是把参数 x 赋值给参数 x,而不是成员变量

可以通过 this 关键字来指明它是成员变量
this.x = x; this表示自己的意思,可以通过this点出这个对象所有的成员变量和方法。