A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李东城 中级黑马   /  2013-2-5 00:03  /  1577 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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  是怎么处理的。  谢谢

4 个回复

倒序浏览
我觉得就是把上面int x=100;初始化中的100赋给变量x。个人认为在这个程序中是多余的把下面的代码去掉结果也是-100.


public void setx(int x){


x=x;
}


   b.setx(-100);


回复 使用道具 举报
这个你用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:55
板凳
之前我对这个理解的也不是很透只是知道那么回事,现在算是理解透了,逛论坛还是有收获
回复 使用道具 举报
代码第7行,所过变量 x 之前不加this关键字的话,就不是给本对象的 x  赋值,相当于 -100=-100.的而本对象的 x 值仍然是 100。代码地30行,你个本对象的 y 赋值为 -200. 所以 x + y 的结果是 -100。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马