[OCAJP]永遠的傳值


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」變數並不會被改變。

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章