陣列是固定大小、同質型別的資料結構,提供索引式隨機存取。掌握宣告、初始化、多維陣列與常見操作,是資料處理基礎。
// 推薦風格:型別[] 變數名
int[] numbers;
String[] names;
double[][] matrix;
// 兼容 C 風格(不推薦)
int numbers[];
int[] scores = new int[10]; // 10 個 int,預設值 0
String[] cities = new String[5]; // 5 個 String,預設值 null
double[][] grid = new double[3][4]; // 3x4 矩陣
int[] primes = {2, 3, 5, 7, 11};
String[] weekDays = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
int[][] identity = {{1,0,0}, {0,1,0}, {0,0,1}};
new int[]{1, 2, 3} // 可直接傳遞給方法
method(new String[]{"A", "B"});
0 開始,到 length - 1 結束。length 是欄位而非方法,無括號:arr.length。ArrayIndexOutOfBoundsException。Java 多維陣列本質是「陣列的陣列」,每一維長度可不同(鋸齒陣列):
int[][] jagged = new int[3][];
jagged[0] = new int[2];
jagged[1] = new int[5];
jagged[2] = new int[3];
存取:jagged[1][2] → 第 2 列第 3 行元素。
| 操作 | 方法/語法 | 說明 |
|---|---|---|
| 複製 | Arrays.copyOf(arr, newLen) | 調整大小複製 |
| 範圍複製 | Arrays.copyOfRange(arr, from, to) | 複製子區間 |
| 排序 | Arrays.sort(arr) | 原地排序(雙軸快排/歸併) |
| 二分搜尋 | Arrays.binarySearch(arr, key) | 需先排序 |
| 填充 | Arrays.fill(arr, value) | 設定所有元素 |
| 比較 | Arrays.equals(arr1, arr2) | 內容相等判斷 |
| 轉字串 | Arrays.toString(arr) | 除錯輸出友善格式 |
| 平行排序 | Arrays.parallelSort(arr) | Java 8+ 多核加速 |
List list = Arrays.asList(arr) (回傳固定大小清單)。List ❌,用 IntStream.of(arr).boxed().collect(...)。Object,可序列化、同步化。List/Set 等集合框架,彈性更大。Object[] 造成型別不安全。copyOf,避免外部竄改內部狀態。