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 關注
- 113 瀏覽
添加回答
舉報
0/150
提交
取消
