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

Java 數組基礎:聲明、初始化與常見陷阱

     編輯:Java 綜合教學

Java 數組基礎:聲明、初始化與常見陷阱

數組是 Java 中最基礎的容器類型,理解其內存佈局與語法限制,能避開大量低級錯誤。本文梳理核心規則並補充實戰注意事項。

一、核心語法規則速查表

操作正確示例錯誤示例說明
聲明int[] arr; / int arr[];int[5] arr;聲明時不指定長度,中括號前後皆可
靜態初始化int[] arr = {1,2,3};int[] arr; arr = {1,2,3};僅能在聲明語句中使用大括號初始化
動態初始化int[] arr = new int[5];—必須指定長度,元素自動賦默認值(0/null/false)
訪問越界—arr[5] (長度5)編譯通過,運行拋 ArrayIndexOutOfBoundsException

二、內存模型圖解

棧內存 (Stack)          堆內存 (Heap)
┌──────────────┐        ┌─────────────────────┐
│  arr (引用)  │ ──────►│  int[3] {10,20,30}  │
└──────────────┘        │  索引: 0  1  2      │
                        └─────────────────────┘
  • 引用變量存棧,數組對象存堆;
  • 多個引用可指向同一數組(淺拷貝),修改內容互相影響。

三、二維/多維數組

// 不規則數組(每行長度不同)
int[][] matrix = new int[3][];
matrix[0] = new int[2];
matrix[1] = new int[4];
matrix[2] = new int[1];

遍歷時請用 matrix[i].length 獲取每行實際長度,避免硬編碼。

四、實戰避坑指南

  1. 長度不可變:需動態增刪請用 ArrayList;
  2. 引用賦值 ≠ 內容拷貝:int[] b = a; 只是複製引用,深拷貝用 Arrays.copyOf 或 System.arraycopy;
  3. 泛型數組陷阱:new T[10] 編譯報錯,需 (T[]) new Object[10] 並接受非受檢警告;
  4. Arrays.asList 返回固定長度 List:不可 add/remove,需 new ArrayList<>(Arrays.asList(...)) 包裹。

五、常用工具類 java.util.Arrays

  • toString() / deepToString():調試打印神器;
  • sort() / binarySearch():雙軸快排 + 二分查找;
  • copyOf() / copyOfRange():高性能擴容/截取;
  • fill() / setAll():批量賦值/ Lambda 初始化。
「數組是性能的基石,集合是生產力的工具。分清場景選對武器,代碼才既快又穩。」
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved