首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Arrays.sort 陷阱:循環條件 <= length 導致數組越界

     編輯:程式設計綜合問答

新手寫 for(int n=0; n<=arra.length; n++) 遍歷數組,運行拋出 ArrayIndexOutOfBoundsException。原因極其簡單:有效索引最大為 length-1。

錯誤代碼

int[] arra = {67,56,324,59,3,56,6};
Arrays.sort(arra);
for(int n=0; n<=arra.length; n++)  // 錯誤:n 最大取 7,arra[7] 不存在
    System.out.print(arra[n]);

正確寫法

for(int n=0; n < arra.length; n++)  // 嚴格小於
    System.out.print(arra[n] + " "); // 加空格分隔可讀性更好

// 或增強 for 循環 (Java 5+)
for(int v : arra)
    System.out.print(v + " ");

為什麼編譯不報錯?

Java 數組訪問屬於運行時檢查,編譯器無法靜態推導循環變量範圍。這也是單元測試、靜態分析工具(SpotBugs、SonarQube)存在的意義。

避坑清單

  • 養成 n < length 肌肉記憶,n <= length-1 同理。
  • 優先用增強 for / Stream API 消除索引操作:Arrays.stream(arra).forEach(System.out::print);
  • 調試時加斷點觀察 n 與 arra.length 的瞬間值。

一個分號之差,從「跑不通」到「順暢輸出」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved