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

Java 數組創建與參數傳遞完整指南:聲明、初始化、值傳遞機制

     編輯:Java 相關知識

Java 數組核心知識體系

數組是 Java 中最基礎的容器,本文系統梳理聲明語法、內存分配、多維數組、參數傳遞機制及常見誤區。

一、數組聲明與創建

兩種聲明語法(等價)

// 風格 1:類型後加 [](推薦,語義清晰:int 數組類型)
int[] scores = null;

// 風格 2:變量名後加 [](C 風格,不推薦)
int scores2[] = null;

靜態初始化(大括號語法)

int[] scores = {90, 85, 95, 88}; // 長度自動推導為 4

動態初始化(new 分配內存)

int[] scores = new int[3]; // 分配 3 個 int 默認值 0
scores[0] = 1; scores[1] = 3; scores[2] = 5;

合寫形式

int[] scores = new int[]{1, 3, 5}; // 匿名數組創建

二、二維與多維數組

// 不規則二維數組
int[][] matrix = new int[3][];
matrix[0] = new int[2];
matrix[1] = new int[4];
matrix[2] = new int[1];

// 靜態初始化
int[][] grid = {{1,2}, {3,4,5}, {6}};

三、數組作為方法參數傳遞

核心原則:值傳遞(傳遞的是引用的副本)

public class ArrayParamDemo {
    public static void modifyArray(int[] arr) {
        // 1. 修改元素內容 → 影響原數組
        arr[0] = 999;
        
        // 2. 重新賦值引用 → 不影響原數組
        arr = new int[]{100, 200}; 
    }
    
    public static void main(String[] args) {
        int[] data = {1, 2, 3};
        modifyArray(data);
        System.out.println(data[0]); // 999(元素被修改)
        System.out.println(data.length); // 3(引用未變)
    }
}

圖解內存模型

main棧幀: data ──────┐
                     ▼
堆內存:      [1, 2, 3] ← 同一對象
                     ▲
modify棧幀: arr ──────┘ (副本指向同一對象)

arr = new int[] 時:
modify棧幀: arr ──────► [100, 200] (新對象,原對象不受影響)

四、數組常用操作速查

操作代碼示例
長度arr.length (屬性,非方法)
遍歷for (int v : arr) 或 Arrays.stream(arr)
複製Arrays.copyOf(arr, newLen) / System.arraycopy()
排序Arrays.sort(arr)
轉字符串Arrays.toString(arr)
填充Arrays.fill(arr, val)

五、常見誤區避坑

  1. 長度不可變:創建後無法擴容,需 ArrayList 或手動複製擴容
  2. 越界拋異常:ArrayIndexOutOfBoundsException,循環條件嚴格用 < length
  3. 引用類型數組默認值為 null:String[] arr = new String[3]; // [null, null, null]
  4. 不要在循環中創建數組:移到循環外復用,減少 GC 壓力

六、最佳實踐建議

  • 優先使用 List<T> / ArrayList 替代原始數組,除非極度追求性能或與底層 API 交互
  • 方法簽名盡量用 List 或 Stream,避免數組引用洩露
  • 防御性複製:public int[] getData() { return Arrays.copyOf(internalArr, internalArr.length); }

掌握數組本質是「固定長度、連續內存、引用類型」,才能寫出高效、無 Bug 的 Java 代碼。

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