黑马程序员技术交流社区

标题: 求助 关于关键字 this [打印本页]

作者: 李东城    时间: 2013-2-5 00:03
标题: 求助 关于关键字 this
  1. class B{

  2. int x=100,y=200;

  3. public void setx(int x){

  4. x=x;

  5. }

  6. public void sety(int y){

  7. this.y=y;

  8. }

  9. public int getxysum(){

  10. return x+y;

  11. }
  12. }
  13. public class ceshi {
  14.            public static void main(String args[]){
  15.         
  16.    B b=new B();
  17.         
  18.    b.setx(-100);
  19.         
  20.    b.sety(-200);
  21.         
  22.    System.out.println(b.getxysum());
  23.            }
  24. }           
复制代码
就是这个  输出结果是-100  主要是不知道  x=x  是怎么处理的。  谢谢
作者: Gaara    时间: 2013-2-5 00:14
我觉得就是把上面int x=100;初始化中的100赋给变量x。个人认为在这个程序中是多余的把下面的代码去掉结果也是-100.


public void setx(int x){


x=x;
}


   b.setx(-100);



作者: qq646742615    时间: 2013-2-8 11:21
这个你用eclipse 或者MyEclipse 写的时候都会有提示啊,如果方法的参数名、局部变量名和类的变量名相同的时候,如果在方法内使用这个变量名的变量,编译器会使用就近原则,所以
public void setx(int x){
x=x;
}
的意思就是说 把参数x的值赋值给参数x 工具一般会提示这句话没实际意义, 本身类的变量x还是初始值0,所以加上this.x = x就能明确告诉编译工具,第一个x是类的变量,第二个x 采用就近原则 自然就是参数x,
答案是-100也很合理啦
作者: 炉海佳    时间: 2013-2-9 11:02
之前我对这个理解的也不是很透只是知道那么回事,现在算是理解透了,逛论坛还是有收获
作者: 邵俊达    时间: 2013-3-3 05:39
代码第7行,所过变量 x 之前不加this关键字的话,就不是给本对象的 x  赋值,相当于 -100=-100.的而本对象的 x 值仍然是 100。代码地30行,你个本对象的 y 赋值为 -200. 所以 x + y 的结果是 -100。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2