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

Popular posts from this blog

Android-使用webview在V3版的Google地圖GPS定位