Given the code fragment:



public class Test {

    public static void main(String[] args) {
        // line n1
        switch (x) {
            case 1:
                System.out.println("One");
                break;
            case 2:
                System.out.println("Two");
                break;
        }
    }
}

Which three code fragments can be independently inserted at line nl to enable the code to print one?

A.

Byte x = 1;
B.
short x = 1;
C.
String x = "1";
D.
Long x = 1;
E.
Double x = 1;
F.
Integer x = new Integer("1");

題解

從switch內的case來看,可以發現用於case的值為整數數值,所以x變數為整數型態的變數。但題目選項有使用到Wrapper類別,這裡要注意到Java的整數數值預設為int型態,但它能夠自動向下轉型至short或是byte。所以也可以自動轉型(auto wrapping)成Integer、Short或是Byte物件。

選項A,數字「1」可自動轉型成Byte物件。
選項B,數字「1」可自動轉型成short基本資料型態。
選項C,這裡的switch並不是使用字串型態的變數。
選項D,數字「1」不可以自動轉型成Long物件,可以改成「1l」或是「1L」來轉型。
選項E,數字「1」不可以自動轉型成Double物件。
選項F,使用字串「1」來產生Integer物件,這是可以的。