【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
參考資料
購買 OCA 電子書
《Java SE8 OCA1z0-808 認證 考古題(電子書) 題目 + 解答》
蝦皮賣場: 購買點此