Q108.
一Java 程式片段如下,執行後下列何者為其輸出?
電腦軟體設計(JAVA) · 乙級 · Java · Q108
難易度分析
3 / 5
本題考查對特定集合操作方法的精確理解,特別是區分將整個物件作為單一元素加入與將集合內容展開加入的行為差異。由於選項中設計了容易混淆的元素展開形式,要求考生必須準確掌握該方法的運作機制以避免落入陷阱。
正確答案:④[A, B, C, D, [A, B]]
④ [A, B, C, D, [A, B]]:ArrayList.add() 方法會將傳入的物件作為單一元素附加至列表尾端。此處 list2 本身是一個 ArrayList 物件,加入後 list1 變成包含五個元素:四個字串 "A"、"B"、"C"、"D" 以及一個巢狀列表 [A, B],故輸出為 [A, B, C, D, [A, B]]。
錯誤選項解析
- ① [A, B, C, D]:此選項僅輸出原始 str1 陣列內容,忽略了後續執行 list1.add(list2) 會將 list2 作為單一元素加入 list1 尾端,因此輸出不應只有 [A, B, C, D]。
- ② [A, B, C, D, A, B]:此選項誤以為 add() 方法會將 list2 的元素逐一展開併入 list1,實際上 ArrayList.add() 是將整個物件作為單一元素加入,不會展開內部元素。
- ③ [A, B, C, D, [A], [B]]:此選項錯誤地將 list2 的每個元素分別以獨立巢狀列表形式加入,但 add() 是將整個 list2 物件作為一個元素加入,不會拆開成 [A] 與 [B] 兩個獨立巢狀列表。
Learning Tip
"本題核心考點在於區分 ArrayList.add() 與 ArrayList.addAll() 的差異:add() 將整個物件作為單一元素加入(可能形成巢狀結構),而 addAll() 才會將集合內的元素逐一展開併入。實務上若需合併兩個列表的內容,應使用 addAll() 方法。此外,clone() 方法產生的是淺層複製,對於包含物件參考的列表需特別注意。"
學員答題分佈
①[A, B, C, D]0%
②[A, B, C, D, A, B]0%
③[A, B, C, D, [A], [B]]0%
④[A, B, C, D, [A, B]]0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!