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

Java 數組深度解析:內存模型、參數傳遞與常見算法

     編輯:Java 程式設計入門

數組在 JVM 內存中的存儲

JVM 將數組對象存儲在堆(Heap)內存區域。堆用於動態內存分配,內存塊可按任意順序分配和釋放。數組變量本身棧上存儲引用,實際數據在堆上。

數組聲明與初始化陷阱

// 聲明:僅創建引用變量,不分配數組內存,值為 null
int[] arr;  // 或 int arr[];

// 錯誤示範:分步初始化語法非法
double[] myList;
myList = {1, 2, 3}; // 編譯錯誤!

// 正確:聲明、創建、初始化一氣呵成
double[] myList = {1, 2, 3};
// 或
double[] myList = new double[]{1, 2, 3};

方法參數傳遞:值傳遞 vs 引用傳遞


public static void main(String[] args) {
    int x = 1;
    int[] y = new int[10];
    modify(x, y);
    System.out.println("x = " + x);       // 輸出 1
    System.out.println("y[0] = " + y[0]); // 輸出 10
}

public static void modify(int num, int[] arr) {
    num = 10;      // 基本類型:傳遞值的副本,不影響原變量
    arr[0] = 10;   // 數組類型:傳遞引用副本,指向同一堆內存,修改生效
}

核心原則:Java 僅支持值傳遞。基本類型傳值,引用類型傳引用的副本(地址值),因此可通過引用修改對象內部狀態,但無法改變引用本身指向。

經典查找與排序算法速查

查找算法

  • 二分查找:前提有序,時間複雜度 O(log n)

排序算法

算法時間複雜度空間複雜度穩定性備註
選擇排序O(n²)O(1)不穩定每輪選最小值換到前端
冒泡排序O(n²)O(1)穩定相鄰比較交換,大值沉底
快速排序O(n log n)O(log n)不穩定分治法,基準值分區
插入排序O(n²)O(1)穩定構建有序序列,插入新元素

最佳實踐建議

  1. 優先使用 Arrays.sort() / Collections.sort()(雙軸快排 / TimSort),性能經過高度優化
  2. 基本類型數組排序用 Arrays.sort(),對象數組用 Arrays.sort(T[], Comparator)
  3. 大數據量場景考慮並行排序 Arrays.parallelSort() (Java 8+)
  4. 避免在高頻代碼中手寫 O(n²) 排序
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved