moea_joint
111年
[資訊] 計算機原理、網路概論
第 19 題
下列在Java語言中,當陣列(Array)的索引值(Index)超過宣告範圍時,何者正確?
- A 編譯器會編譯程式,但程式執行時會產生例外(Exception)
- B 編譯器會編譯程式,但程式執行時結果可能錯誤
- C 編譯器在編譯程式時產生錯誤並停止編譯程式
- D 編譯器在編譯程式時產生警告訊息,但仍會編譯程式
思路引導 VIP
請試著思考:如果一個陣列的長度是根據使用者當下輸入的數字來決定,那麼編譯器在「閱讀程式碼文字」的階段,有沒有可能預知使用者未來會輸入哪一個數字?如果編譯器無法提前預知,那麼電腦應該在什麼時機點,才能最精準地判斷出這個索引號碼是否超出了範圍呢?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精確判斷 Java 對陣列邊界的處理機制,這說明你對程式執行流程與錯誤處理機制有著相當紮實的理解。
執行時期的動態安全檢查
在 Java 語言中,陣列的大小往往是在程式執行時才動態配置的。因此,編譯器在靜態掃描程式碼時,通常無法預知變數索引值在運行當下是否會超出範圍,這使得程式能順利通過編譯階段。然而,Java 是一門極度強調穩健性(Robust)的語言,當程式實際運作時,Java 虛擬機 (JVM) 會進行即時的邊界監控。一旦偵測到存取了不合法的索引位址,系統便會拋出 ArrayIndexOutOfBoundsException 這一類型的執行時期例外 (Runtime Exception),藉此保護記憶體不被非法存取,並防止程式產生不可預期的錯誤結果。
▼ 還有更多解析內容