int[] s = new int[10]{1,2,3,4,5,6,7,8,9,10}; // 編譯錯誤
for (int i : s) { ... }
new int[10]{...} **語法非法**。Java 數組初始化只有兩種合法形式:
int[] s = {1,2,3,4,5,6,7,8,9,10}; 或 int[] s = new int[]{1,2,3,4,5,6,7,8,9,10};int[] s = new int[10];(元素默認 0),後續賦值。不能同時指定長度 [10] 和初始化列表 {...}。
// 方式一:靜態初始化(推薦)
int[] s = {1,2,3,4,5,6,7,8,9,10};
// 或
int[] s = new int[]{1,2,3,4,5,6,7,8,9,10};
// 方式二:動態初始化後賦值
int[] s = new int[10];
for (int i = 0; i < s.length; i++) s[i] = i + 1;
// 增強 for 正常工作
for (int i : s) {
System.out.println(i);
}
編譯器將 for (int i : s) 轉換為索引循環:
for (int idx = 0; idx < s.length; idx++) {
int i = s[idx];
// 循環體
}
要求被遍歷對象實現 Iterable 或為數組。
數組初始化**不可同時指定長度與列表**。刪除 [10] 或改用動態初始化即可修復。增強 for 循環本身語法正確,錯誤在數組聲明。