首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 數組聲明與初始化三種方式完全指南

     編輯:Java 相關知識

三種核心語法

// 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});             // ❌ 編譯錯誤
    }
}

易混淆重點

  1. 數組長度屬性:arr.length(無括號)
  2. 字符串長度方法:str.length()(有括號)
  3. 聲明時不能指定長度:int[5] arr ❌,Java 數組聲明分離引用與內存分配
  4. 默認值規則:new 分配內存即自動賦默認值(數值 0、布爾 false、引用 null)

進階:二維數組初始化

// 不規則二維數組
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:for (int v : arr)

總結

掌握三種初始化語法的適用邊界,特別記住 聲明不指定長度、new 分配即有默認值、匿名數組只能用 new int[]{},即能應對 99% 數組操作場景。

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