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

Java 陣列入門完全指南:一維、多維、初始化、常見操作

     編輯:Java 程式設計入門

一、陣列基礎概念

  • 陣列是固定長度、同質型別 的容器,記憶體連續分配。
  • 存取複雜度:讀寫 O(1),插入/刪除 O(n)。
  • 陣列本身是物件,繼承 Object,實作 Cloneable、Serializable。

二、一維陣列

2.1 宣告與建立

// 宣告(兩種風格皆可,推薦第二種)
int[] scores;
int scores[]; // C 風格,不推薦

// 建立並指定長度
scores = new int[5]; // 預設值 0

// 宣告+建立合寫
int[] scores = new int[5];

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

int[] primes = {2, 3, 5, 7, 11}; // 長度自動推導為 5
String[] names = {"Alice", "Bob", "Charlie"};

2.3 存取與長度

System.out.println(primes[0]); // 2
System.out.println(primes.length); // 5 (屬性,非方法)
// 索引範圍 0 ~ length-1,越界拋 ArrayIndexOutOfBoundsException

2.4 遍歷方式

// 傳統 for
for (int i = 0; i < arr.length; i++) { ... }

// 增強 for (Java 5+),唯讀遍歷
for (int v : arr) { ... }

// Java 8 Stream
Arrays.stream(arr).forEach(System.out::println);

三、多維陣列

3.1 二維陣列本質:陣列的陣列

int[][] matrix = new int[3][4]; // 3 列,每列 4 欄
// 記憶體佈局:matrix 指向長度 3 的陣列,每個元素指向長度 4 的 int 陣列

3.2 不規則陣列

int[][] ragged = new int[3][];
ragged[0] = new int[2];
ragged[1] = new int[5];
ragged[2] = new int[3]; // 每列長度不同

3.3 靜態初始化

int[][] board = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

3.4 遍歷二維陣列

for (int[] row : matrix) {
    for (int cell : row) { ... }
}

四、Arrays 工具類常用操作

方法功能
Arrays.toString(arr)一維陣列轉可讀字串 [1, 2, 3]
Arrays.deepToString(arr)多維陣列遞迴轉字串
Arrays.sort(arr)原地排序 (Dual-Pivot Quicksort)
Arrays.binarySearch(arr, key)二分搜尋 (前提已排序)
Arrays.copyOf(arr, newLen)複製並調整長度
Arrays.fill(arr, val)填充指定值
Arrays.equals(a, b)內容逐項比較
Arrays.stream(arr)轉 Stream 進行函式式操作

五、陣列複製陷阱

int[] a = {1,2,3};
int[] b = a;           // 參考複製,指向同一物件
int[] c = a.clone();   // 淺層複製,基本型別值複製
int[] d = Arrays.copyOf(a, a.length); // 同 clone()
b[0] = 99;
System.out.println(a[0]); // 99 (a,b 共享)
System.out.println(c[0]); // 1 (獨立)

多維陣列 clone() 僅淺層複製第一層,內層陣列仍共享,需手動深層複製。

六、陣列 vs 集合

特性陣列ArrayList
長度固定動態擴容
型別基本型別/物件僅物件 (自動裝箱)
效能極高 (連續記憶體)略低 (擴容複製)
API 豐富度低高 (增刪改查、流)

建議:已知固定長度、高效能、基本型別 → 陣列;其餘 → ArrayList。

七、常見面試題

  1. int[] a = new int[3]; 元素預設值? → 0
  2. String[] s = new String[3]; 預設值? → null
  3. 陣列能否用 == 比較內容? → 不能,比較參考;用 Arrays.equals()。
  4. 如何反轉陣列? → Collections.reverse(Arrays.asList(arr)) 或雙指標交換。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved