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物件,這是可以的。