民國111年 第2梯次 電腦軟體設計(JAVA)乙級 學科

第33題

一Java 程式片段如下,執行後下列何者為其輸出?

題目

一Java 程式片段如下,執行後下列何者為其輸出?

  1. (1) [A, B, C, D, A, B]
  2. (2) [A, B, C, D, [A], [B]]
  3. (3) [A, B, C, D]
  4. (4) [A, B, C, D, [A, B]]

官方答案

(4) [A, B, C, D, [A, B]]

解析

此題考 ArrayList 的 add 與 addAll 差異。若主串列 list 含 [A,B,C,D],且以 list.add(subList)(subList=[A,B])加入子串列「本身」而非其元素,則子串列會被視為單一元素存入,結果為 [A,B,C,D,[A,B]],對應選項 4。若使用 list.addAll(subList) 則會展開元素得 [A,B,C,D,A,B](選項 1)。關鍵觀念:add(Object) 把引數當一個物件加入;addAll(Collection) 才把集合內每個元素逐一加入。選項 2、3 不符此操作結果。依測試 add(非 addAll)之巢狀子串列輸出,答案為選項 4。

AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。

官方資料