數組是 Java 中最基礎的容器結構,掌握其核心操作是寫出高效、無 Bug 代碼的前提。本文系統梳理數組聲明、初始化、遍歷、排序、拷貝、多維數組及常見陷阱。
// 靜態初始化
int[] scores = {90, 85, 95, 78};
String[] names = new String[]{"Alice", "Bob", "Charlie"};
// 動態初始化(指定長度,元素為默認值)
int[] nums = new int[10]; // 全 0
Object[] objs = new Object[5]; // 全 null
// 1. 傳統 for 循環(可控索引、高性能)
for (int i = 0; i < arr.length; i++) { ... }
// 2. 增強 for 循環(foreach,語法簡潔,僅讀)
for (int num : nums) { System.out.println(num); }
// 3. Java 8 Stream 流式處理(函數式、並行友好)
Arrays.stream(arr).forEach(System.out::println);
IntStream.range(0, arr.length).forEach(i -> System.out.println(arr[i]));
| 方法 | 說明 |
|---|---|
sort() | 原地排序(基本類型雙軸快排,對象 TimSort),支援比較器 |
binarySearch() | 二分查找,**前提已排序** |
copyOf() / copyOfRange() | 拷貝指定長度/範圍,返回新數組 |
fill() | 填充指定值 |
equals() / deepEquals() | 比較內容相等(多維用 deepEquals) |
toString() / deepToString() | 輸出可讀字串(多維用 deepToString) |
parallelSort() | 並行排序(Java 8+,大數組顯著加速) |
setAll() | 用生成器函數賦值(Java 8+) |
int[] src = {1, 2, 3};
int[] dest1 = src; // 引用賦值,指向同一對象
int[] dest2 = src.clone(); // 一維基本類型:深拷貝
int[] dest3 = Arrays.copyOf(src, src.length); // 深拷貝
int[] dest4 = System.arraycopy(src, 0, dest4, 0, src.length); // 最高性能,需預分配目標
多維數組/對象數組:clone()、copyOf() 均為淺拷貝(拷貝引用),需手動遞歸深拷貝或用序列化/JSON 實現。