【Java】【OCA】1. What is the result?

最後更新日期:2024年09月15日

題目

Given:

class Product {
    double price;
}

public class Test {
    public void updatePrice(Product product, double price) {
        price = price * 2;
        product.price = product.price + price;
    }

    public static void main(String[] args) {
        Product prt = new Product();
        prt.price = 200;
        double newPrice = 100;

        Test t = new Test();
        t.updatePrice(prt, newPrice);
        System.out.println(prt.price + " : " + newPrice);
    }
}

What is the result?
A. 200.0 : 100.0
B. 400.0 : 200.0
C. 400.0 : 100.0
D. Compilation fails.

解題

pass by reference: 方法內對參照變數進行操作,會影響原變數的值,
pass by value: 方法內對基本變數進行操作,不會影響原變數的值,
prt 是物件型態,pass by reference,
newPrice 是基本資料型態,pass by value,
進入 updatePrice() 方法後,
price 為基本資料型態,方法內執行的過程不會影響原傳入的變數,
price = 100 * 2 = 200,
product.price = 200 + 200 = 400,
此時物件型態 prt 的 price 數值變成 400,而 newPrice 數值不變,
印出 400.0 : 100.0。

答案

C. 400.0 : 100.0

參考資料

  1. 《最新 Java 程式語言 修訂第七版》
  2. [OCAJP]永遠的傳值
  3. Java – Pass by value or Pass by reference? – 古古’s Blog

購買 OCA 電子書

《Java SE8 OCA1z0-808 認證 考古題(電子書) 題目 + 解答》

《Java SE8 OCA1z0-808 認證 考古題(電子書) 題目 + 解答》
蝦皮賣場: 購買點此

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *