Given:



What is the result?

A.

200.0 : 100.0

B.

400.0 : 200.0

C.

400.0 : 100.0

D. Compilation fails.

題解

這題是在考Java永遠為「pass by value」的概念。

第20行同時將基本型態的區域變數「newPrice」和物件參考的變數「prt」當作參數傳給「updatePrice」方法。此時「newPrice」和「prt」的值都會被複製一份出來,「prt」的值為Product物件的參考(類似記憶體位址)。

「updatePrice」方法會將「newPrice」的值乘2,再加給「prt」物件的「price」變數。

第21行將「prt」物件的「price」變數的值和「newPrice」變數的值輸出。「prt」物件的「price」變數的值會是執行「updatePrice」方法時改變的結果,而「main」方法的「newPrice」變數並不會被改變。