亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

假設當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 關注
  • 113 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號