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

Java 進階基礎:靜態方法、Arrays 工具類與二維數組深度解析

     編輯:Java 綜合教學

一、靜態方法全解析

定義與呼叫

靜態方法屬於類而非實例,透過 類名.方法名() 直接呼叫,無需 new 物件。宣告語法:

訪問修飾符 static 返回型別 方法名(參數列表) {
    // 方法體
}

四大分類與代碼範例

類型特徵範例
無回傳值void,執行動作不產出資料列印、排序、寫入檔案
有回傳值具體型別,必須 return計算、查詢、轉換
無參數參數列表為空初始化、固定邏輯
有參數接收外部資料通用演算法、資料處理

冒泡排序三種寫法對比

版本 1:void + 陣列參數(引用傳遞,原地排序)

public static void bubble(int[] arr) {
    for (int i = 0; i < arr.length - 1; i++)
        for (int j = 0; j < arr.length - i - 1; j++)
            if (arr[j] > arr[j + 1]) swap(arr, j, j + 1);
}

版本 2:回傳排序後陣列(鏈式呼叫友善)

public static int[] bubble(int[] arr) {
    // ... 排序邏輯同版本 1
    return arr; // 回傳同一參考
}

版本 3:方法復用與無參輔助方法

public static void show1() { System.out.print("排序前:"); }
public static void show2() { System.out.print("排序後:"); }
// 主流程
show1(); print(arr);
show2(); print(bubble(arr));

核心觀念

  • 基本型別傳值:方法內修改不影響外部。
  • 陣列/物件傳引用:方法內修改內容會影響外部;但重新指派參考(arr = new int[5])不影響外部。
  • 方法重載:同名不同參數列表,編譯期綁定。

二、Arrays 工具類實戰速查

java.util.Arrays 提供陣列操作標準庫,核心方法:

方法功能範例
copyOf(arr, newLen)擴容/縮容複製Arrays.copyOf(arr, 10)
copyOfRange(arr, from, to)區間複製 [from, to)Arrays.copyOfRange(arr, 2, 5)
equals(arr1, arr2)內容逐項比對回傳 boolean
fill(arr, val)全部填充指定值Arrays.fill(arr, -1)
sort(arr)原地快速排序雙軸快排,基本型別用
binarySearch(arr, key)二分查找(需先排序)回傳索引,找不到為 (-(插入點) - 1)
toString(arr)陣列轉可讀字串[1, 2, 3]

補充:System.arraycopy(src, srcPos, dest, destPos, len) 為底層高效複製,大量資料移動首選。


三、二維數組深度掌握

記憶體模型

Java 二維陣列本質是「陣列的陣列」:

  • 第一維存放「第二維陣列的引用」。
  • 每個第二維陣列長度可不同(鋸齒陣列)。
  • new int[3][] 僅分配 3 個引用槽位,第二維需逐個 new int[n]。

兩種初始化方式

// 靜態初始化:編譯期確定內容
int[][] arr1 = {{1,2}, {3,4,5}, {6,7,8,9}};

// 動態初始化:執行期構建鋸齒結構
String[][] arr2 = new String[3][];
arr2[0] = new String[2];
arr2[1] = new String[3];
arr2[2] = new String[4];
// 逐項賦值
arr2[0][0] = "abc00"; // ...

遍歷最佳實踐

for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) { // 必須用 arr[i].length
        System.out.print(arr[i][j] + " ");
    }
    System.out.println();
}

// Java 5+ 增強 for(僅讀取)
for (int[] row : arr) {
    for (int val : row) System.out.print(val + " ");
    System.out.println();
}

常見坑點

  1. new int[3][4] vs new int[3][]:前者自動建立 3x4 矩形;後者需手動建立第二維。
  2. 陣列越界:arr[i].length 隨行變化,不可寫死。
  3. 淺拷貝陷阱:int[][] copy = arr.clone() 僅複製第一維引用,修改 copy[0][0] 會影響原陣列。深拷貝需逐行 Arrays.copyOf。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved