// 1. 指定長度,默認值初始化
int[] arr1 = new int[10]; // {0,0,0,0,0,0,0,0,0,0}
// 2. 靜態初始化(大括號列表)
int[] arr2 = {1, 2, 3, 6}; // 必須在聲明時同時賦值
// 3. 動態初始化(new + 大括號)
int[] arr3 = new int[]{1, 2, 3, 4, 5, 6, 7, 22}; // 推薦:不指定長度
| 方式 | 是否指定長度 | 適用場景 | 語法限制 |
|---|---|---|---|
| new int[10] | ✅ 必須 | 預知大小,後續賦值 | 無 |
| {1,2,3} | ❌ 自動推斷 | 已知具體值 | 只能在聲明語句中使用 |
| new int[]{...} | ❌ 自動推斷 | 已知值,需傳遞/返回 | 可作為參數、返回值、匿名數組 |
public class ArrayDemo {
public void showArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
}
public static void main(String[] args) {
// 1. 僅聲明,未初始化 — 不能直接使用
int[] aa;
// System.out.println(aa); // 編譯錯誤:可能未初始化
// 2. 三種初始化
int[] arr1 = new int[10];
int[] arr2 = {1, 2, 3, 6};
int[] arr3 = new int[]{1, 2, 3, 4, 5, 6, 7, 22};
ArrayDemo demo = new ArrayDemo();
demo.showArray(arr1); // 全 0
demo.showArray(arr2); // 1 2 3 6
demo.showArray(arr3); // 1 2 3 4 5 6 7 22
// 3. 匿名數組傳參 — 僅方式 3 支持
demo.showArray(new int[]{1, 3, 2, 33}); // ✅
// demo.showArray({2, 4, 1}); // ❌ 編譯錯誤
}
}
arr.length(無括號)str.length()(有括號)int[5] arr ❌,Java 數組聲明分離引用與內存分配// 不規則二維數組
int[][] matrix = {
{1, 2, 3},
{4, 5},
{6, 7, 8, 9}
};
// 動態分配行
int[][] dynamic = new int[5][];
for (int i = 0; i < 5; i++) {
dynamic[i] = new int[3]; // 每行 3 列
}
int[] arr 風格(類型在前,語義清晰){...} 或 new int[]{...}new int[size] 再填充new int[]{...}for (int v : arr)掌握三種初始化語法的適用邊界,特別記住 聲明不指定長度、new 分配即有默認值、匿名數組只能用 new int[]{},即能應對 99% 數組操作場景。