public class Answer {?public static void main(String[] args) {? ? int score = 20;? ?Answer ?ans= new Answer();? ?? ?ans.add(score);? ?System.out.println(" main: score = " + score);?}?void ?add(int score) {? ?System.out.println(" add: score=" + score++);?}}
7 回答
趙明明123
TA貢獻1條經驗 獲得超1個贊
本題考查的是Java的方法參數傳遞。在Java中方法參數傳遞只有值傳遞,其特點如下: 1)基本數據類型傳遞的是值本身。 2)引用數據類型傳遞也是引用的值,是對象的地址,而不是對象本身。 本題中,首先要明白main方法中的局部變量score,和add方法的形參score在棧內存中是兩個變量,當調用add方法時,是把main方法中局部變量score的值20賦值給add方法的形式參數score,所以當形參score在add方法中發生變化時不會影響到main方法中局部變量score的值。 本題運行過程如下: 1.從main方法的第一行開始,定義并初始化局部變量score。 2.實例化Answer類的對象ans,調用add方法,將main方法中的score的值賦值給形參score,此時,形參score的值為20。 3.計算表達式score++的值。計算后,score++表達式的值為20,score的值變為21。此處輸出的是score++表達式的值,該值為20。 4.由于形式參數score的改變不會影響main方法中score的值,故main方法中輸出score仍然為20。
添加回答
舉報
0/150
提交
取消
