Given:
public class Whizlabs {
public static void main(String[] args) {
try {
Double number = Double.valueOf("120D");
} catch (NumberFormatException ex) {
}
System.out.println(number);
}
}
What is the result?
A.
120
B.
120D
C. A NumberFormatException will be thrown.
D. Compilation fails due to error at line 5.
E. Compilation tails due to error at line 8.
題解
程式第5行,使用Double類的valueOf方法將字串轉成Double物件。
「120D」或是「120d」在Java中是正確的數值表示方式,表示為double型態的120。若為「120F」或是「120f」,則表示為float型態的120。若為「120」或是「120」,則表示為int型態的120。程式碼舉例如下:
int a = 120;
float b = 120f;
double c = 120d;
因此程式第5行會成功執行並產生Double物件,而不會拋出例外。但是在程式第8行,有用到number變數,但number變數只有在第4行開始的try程式區塊中被定義,有效範圍只有在try程式區塊中。因此程式第8行會因為沒有定義number,而發生編譯錯誤。