如果变量不能这样定义也应该在编译的时候出现错误,但是编译没错····但是,运行的结果不对,请问是什么原因  请教大侠····
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
到底是什么原因??

解决方案 »

  1.   

    代码改成这样
    Point (double x,double y){
    this.x = x;
    this.y = y;
    }
      

  2.   

    x = x; 改成 this.x=x;
    y = y; 该成 this.y=y;x,y是传入的参数,不是成员变量"x","y". "this.x,this.y"就是特指成员变量 "x,y".
      

  3.   

    两种解决方法  1.把参数double x,double y改成 double i,double j 然后 x = i; y =j;2.把 x = x; 改成 this.x=x;  把 y = y; 该成 this.y=y;
      

  4.   

    构造函数中如果参数和成员变量名相同,应在成员变量前加上this指针。
      

  5.   

    Point (double x,double y){
     this.x = x;
     this.y = y;
     }
     
      

  6.   

    Java在方法里 如果有参数名跟成员变量名相同 的时候:
      当你使用的它就会按就近原则,认为你是在操作参数而不是成员变量
            比如你写的
                 x = x; 它会认为你是把参数 x 赋值给参数 x,而不是成员变量
               
    可以通过 this 关键字来指明它是成员变量
             this.x = x;  this表示自己的意思,可以通过this点出这个对象所有的成员变量和方法。
      

  7.   

    用this的原因就是因为有就近原则
      

  8.   

    改为这种即可,以x为例,这里的this.x代表当前对象的x属性就是你定义的private double x这个变量,x表示的是你传入的参数值,这里是2.5,楼主那种写法其实就是传入参数自己给自己赋值,真正的对象p的x值没变,采用了double类型默认的初始化值0.0。同理Y