SCJP 1.6版考題 178
出自 陳富國維基館
Given: 1. public class Target{ 2. private int i = 0; 3. public int addOne(){ 4. return ++i; 5. } 6. } And: 1. public class Client{ 2. public static void main(String[] args){ 3. System.out.println(new Target().addOne()); 4. } 5. } Which change can you make to Target without affecting Client? A. Line 4 of class Target can be changed to return i++; B. Line 2 of class Target can be changed to private int i = 1; C. Line 3 of class Target can be changed to private int addOne(){ D. Line 2 of class Target can be changed to private Integer i = 0;
解答
Ans: D
解說:
此題問那一個對Target進行改變而不影響Client? (Client不用跟著改) A 先i++再回傳值 改成 先回傳值再i++,二種方式的回傳值會差1,Client必須處理這個不同的值 B 將i的初值設為1,與原先的初值0不同,Client必須處理這個不同的初值 C addOne方法改成私有後,影響Client無法存取該方法 D Integer是int的包裝類別,在JDK 1.5之後,Java會對基本資料型態的int與int的包裝類別“自動地“進行基本資料的封箱(auto-boxing) 與基本資料的包裝類別拆箱動作(auto-unboxing),所以換寫成Integer不會造成任何的影響。
|