SCJP題庫第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不會造成任何的影響。
Comments