假设当setValue()方法显示变量j时,该变量的值是多少?

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); 
}
}

人到中年有点甜
浏览 102回答 2
2回答

梦里花落0921

答: 我们来分析一下值的获得过程首先看外部的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**/

慕码人8056858

必然是21呀这种东西跑一下不就知道了
打开App,查看更多内容
随时随地看视频慕课网APP