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

第31題

有關Java 語言的Array 使用到超過所宣告的索引上限時,下述何者正確?

題目

有關Java 語言的Array 使用到超過所宣告的索引上限時,下述何者正確?

  1. (1) 編譯執行沒有問題, 但會產生不正確的結果
  2. (2) 產生編譯警告
  3. (3) 產生編譯錯誤
  4. (4) 編譯無誤,執行時期會產生錯誤

官方答案

(4) 編譯無誤,執行時期會產生錯誤

解析

Java 對陣列(Array)設有「執行時期邊界檢查(runtime bounds checking)」。編譯時期編譯器僅檢查語法,無法預知執行時的索引值,因此程式可正常編譯;但當執行到超過索引上限(或低於下限)的存取時,JVM 會拋出 ArrayIndexOutOfBoundsException,屬執行時期錯誤(RuntimeException),程式隨即中止。故「編譯無誤,執行時期會產生錯誤」正確。選項 1、2、3 皆有誤:編譯期既不報錯也不產生警告,更不會默默產生不正確結果而不中斷。觀念重點:Java 以安全性取代 C/C++ 的指標自由,越界必在執行期被偵測。

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

官方資料