当前位置: 代码迷 >> Java相关 >> this的问题
  详细解决方案

this的问题

热度:116   发布时间:2010-11-09 16:20:57.0
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
啊,结果跟我想的不一样,希望有人指点下。
搜索更多相关的解决方案: void  public  

----------------解决方案--------------------------------------------------------
你想的是什么啊
----------------解决方案--------------------------------------------------------
如果,
    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就行了

----------------解决方案--------------------------------------------------------
  相关解决方案