public class Test { int i = 40;int j; public Test() { setValue(i++); } void setValue(int inputValue) { int i = 20;j = i + 1;System.out.println("j = " + j); }}
2 回答

梦里花落0921
TA贡献1772条经验 获得超6个赞
答: 我们来分析一下值的获得过程
首先看外部的friend公共变量:
int i = 40 ; int j; // j = null |
这时i的值为40
再来看方法setValue内的:
int i = 20 ; j = i + 1 ; // j = 20 + 1 |
注意:新手都很容易混淆的是: 这里的 i + 1 并非 this.i + 1
所以 j 的值是 20 + 1
再仔细想想,setValue方法调用时的参数为 41 (40++) ,可是方法内并没有用到形参inputValue
所以输出的值就是21
祝你java学习的更好!
PS:
若方法内和方法外的公共变量或常量有同名,就可如此处理,更要分清有this和没有this的区别
public class Test { int i = 40 ; int j; public Test() { printValue0(); printValue1(); } public void printValue0() { int i = 20 ; //定义变量i System.out.println( "printValue0: " +i); //没有this,使用内部的i } public void printValue1() { int i = 20 ; //定义变量i System.out.println( "printValue1: " + this .i); //有this,使用外部公共变量 } } /** * Output: * printValue0: 20 * printValue1: 40 **/ |
- 2 回答
- 0 关注
- 101 浏览
添加回答
举报
0/150
提交
取消