Day41--練習--選擇題錯題
- 若要在Java中表示一個空引用,應該使用什麼?正確答案:A
A. null
B. 0
C. ""
D. false
解析:在 Java 中,用null
來表示空引用,即一個物件引用不指向任何有效的物件例項。0
一般用於表示數字型別的初始值或特定數值含義;""
用於表示空字串,它是一個有效的String
物件例項,只是內容為空;false
是布林型別的值,用於表示邏輯上的假,和空引用概念不同。
- 以下程式碼中,哪個是正確的方法呼叫?正確答案:A 錯選:B
public class Main {
public static void printMessage(String message) {
System.out.println(message);
}
}
A. printMessage("Hello");
B. Main.printMessage("Hello");
C. printMessage();
D. Main - printMessage("Hello");
解析:在 Java 中,當一個方法是靜態方法(像這裡的printMessage
方法被宣告為public static
)時,可以直接透過類名或者在同一個類中直接使用方法名進行呼叫。在給出的程式碼示例中,因為呼叫程式碼沒有特殊說明所在類的情況且printMessage
是靜態方法,所以可以直接寫printMessage("Hello");
來呼叫。Main.printMessage("Hello");
這種寫法略顯冗餘,雖然在某些特定場景下也不算錯,但不是最簡潔常規的呼叫方式;printMessage();
缺少引數,不符合方法定義的引數要求;Main - printMessage("Hello");
這種寫法是語法錯誤的,不存在這樣的呼叫語法。
- 若有一個方法
public static int add(int a, int b)
,以下呼叫方式正確的是?正確答案:A 錯選:C
A. add(1, 2)
B. Main.add(1, 2)
C. new Main().add(1, 2)
D. add;
解析:因為add
方法是靜態方法,所以可以直接透過方法名進行呼叫,傳入相應的引數即可,即add(1, 2)
是正確的呼叫方式。Main.add(1, 2)
這種寫法在沒有特殊說明Main
類與當前程式碼關係且add
方法已經是靜態可直接呼叫的情況下,是多餘的;new Main().add(1, 2)
這種方式一般用於呼叫例項方法,而這裡add
是靜態方法,不需要透過建立類的例項來呼叫;add;
只是寫了方法名,沒有實際進行呼叫操作,缺少括號及引數,是錯誤的語法形式。
- 在Java中,如何將一個字串轉換為整數?正確答案:A 錯選:D
A. Integer.parseInt()
B. String.toInt()
C. (int)String
D. int.valueOf(String)
解析:在 Java 中,將字串轉換為整數通常使用Integer.parseInt()
方法,它接收一個表示整數的字串作為引數,並返回對應的整數值。例如String numStr = "123"; int num = Integer.parseInt(numStr);
。String.toInt()
這種方法並不存在於String
類中;(int)String
這種強制型別轉換語法是錯誤的,不能直接將String
型別強制轉換為int
型別;int.valueOf(String)
方法返回的是一個Integer
物件(int
的包裝類),而不是直接返回基本資料型別int
,雖然在某些情況下可以透過自動拆箱來獲取int
值,但它不是最直接用於將字串轉換為int
的方式,所以本題最合適的答案是Integer.parseInt()
。
- 以下哪個介面在Java中用於實現迭代器功能?正確答案:B
A. Iterable
B. Iterator
C. Collection
D. List
解析:在 Java 集合框架中,Iterator
介面用於實現迭代器功能,它定義了一系列方法如hasNext()
用於判斷是否還有下一個元素,next()
用於獲取下一個元素等,透過實現這個介面可以讓集合類支援遍歷操作。Iterable
介面是一個可以產生Iterator
的介面,一般集合類會實現Iterable
介面,以便可以使用增強型for
迴圈等方式進行遍歷,但它本身不是直接實現迭代器功能的介面;Collection
是集合框架中的根介面,定義了集合的一些通用操作方法,但不是專門用於實現迭代器功能的;List
是Collection
的子介面,代表有序的集合,同樣不是用於實現迭代器功能的介面,雖然它的實現類可以透過實現Iterable
介面進而使用迭代器進行遍歷,但關鍵的迭代操作實現是基於Iterator
介面的。
- 在Java中,以下哪種異常是必須要進行處理(捕獲或者丟擲)的? 正確答案:B
A. RuntimeException
B. IOException
C. NullPointerException
D. ArrayIndexOutOfBoundsException
解析:在 Java 中,IOException
是檢查異常(checked exception),這類異常在方法宣告中如果可能丟擲該異常,就必須在方法內部進行捕獲處理或者在方法簽名中宣告丟擲該異常,讓呼叫者去處理。RuntimeException
及其子類(如NullPointerException
、ArrayIndexOutOfBoundsException
等)屬於執行時異常(unchecked exception),這些異常在程式執行過程中可能會出現,但編譯器不強制要求在程式碼中顯式地進行捕獲或者丟擲處理,雖然在實際開發中為了程式的健壯性也可能會對它們進行處理,但從語法強制要求角度,不像IOException
那樣必須處理。
- 以下程式碼的輸出結果是? 正確答案:B
String str1 = "Hello";
String str2 = new String("Hello");
System.out.println(str1 == str2);
A. true
B. false
C. 編譯錯誤
D. 執行時錯誤
解析:在 Java 中,==
運算子用於比較兩個物件的引用是否相同。對於String
型別,str1 = "Hello";
這裡str1
指向的是字串常量池中的"Hello"
物件,而str2 = new String("Hello");
這種方式會在堆記憶體中重新建立一個新的"Hello"
物件,雖然內容相同,但它們的引用是不同的。所以str1 == str2
的結果是false
,因為它們指向的不是同一個物件例項。