java类成员变量与局部变量同名时的操作

为什么输出结果是那个,求教T_T

1.Before changVar,调用getXYZ()方法,输出的是成员变量的初始值1,1,1;
2.In changeVar,调用changeVar方法,输出的x是成员变量,x=a,a是传进来的值为10;y和z都是局部变量,分别对应传进来的b,和9,所以结果是 10,10,9;
3.After changeVar,再次调用getXYZ()方法,输出的仍然是成员变量,在第2步中,x变为了10,y没有变化,但是z被赋予了c的值,而c是10,所以结果是:10,1,10
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-30
成员变量跟局部变量的作用范围不一样,你在打印的那个前面加上this,就是打印成员变量了
第2个回答  2014-12-30
before change 你应该懂的,in change 是在函数内有同名的xyz变量,所以如果没有显示的指明,里面的xyz全部指的局部变量,而this.x则显示的指明x用的是全局变量,所以after change你应该懂的。也就是说当同名全局、局部变量同时出现在局部变量的作用域内时,引用所指皆为局部变量的值。
第3个回答  2014-12-30
在ChageVar的System.out.println()里输出的变量没有加this,所以输出的是:
成员变量x,局部变量y,局部变量z 结果:10,10,9
相似回答