为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
人到中年有点甜 2022-12-17 17:13:01
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**/


查看完整回答
反对 回复 2022-12-21
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

必然是21呀
这种东西跑一下不就知道了

查看完整回答
反对 回复 2022-12-21
  • 2 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号