Java陣列(基本+記憶體分析)
阿新 • • 發佈:2020-07-25
## 一、陣列概念
陣列即為多個相同資料型別資料的資料按一定順序排列的集合。
## 二、陣列的特點
1、陣列有陣列名、索引、元素、素組長度;
2、陣列的元素可以是基本資料型別也可以是引用資料型別;
3、陣列的長度一旦確定便不可更改;
4、陣列的在記憶體中表現為連續的儲存單元,陣列名引用的是首地址;
## 三、陣列分類
按照維度分可以分為一維陣列和多維陣列;按照元素型別分可以分為基本型別元素陣列和引用資料型別元素陣列。
## 四、初始化預設值
![](https://img2020.cnblogs.com/blog/2080196/202007/2080196-20200725192817197-1992092710.png)
## 五、一維陣列
### 初始化
1、動態初始化:動態初始化便是陣列宣告和賦值分別進行。例如:
`int array[] = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;`
2、靜態初始化:動態初始化便是陣列宣告和賦值同時進行。例如:
`int []array = {1,2,3,4,5};`
### 記憶體分析
記憶體結構簡圖:
![](https://img2020.cnblogs.com/blog/2080196/202007/2080196-20200725190702074-1184244495.png)
用以下程式碼分析記憶體:
`int []id = new int[3]; id[1] = 12; id[2] = 56; id[3] = 45;`
定義陣列後:
![](https://img2020.cnblogs.com/blog/2080196/202007/2080196-20200725191628080-1092418993.png)
陣列賦值以後:
![](https://img2020.cnblogs.com/blog/2080196/202007/2080196-20200725191910356-1230546134.png)
從上不難看出:當建立一個數組是(即new一個數組),首先在棧空間出現陣列名,在堆空間開闢出連續的儲存空間,並且陣列名指向連續儲存空間的首地址,儲存空間的儲存值均為預設值。
## 六、二維陣列
### 概述
上文中提到,陣列的元素資料型別可以為基本資料型別和引用資料型別,一維陣列中元素就是基本資料型別資料,例如int、double等;而二維陣列實際上就是將一維陣列的元素由基本資料型別變為了引用資料型別,在一維陣列中在存入陣列,所以從根本來看,不存在二維陣列。
### 初始化
1.1、動態初始化格式一:
`int [][]array = new int[3][2];`
實際上即使有一個一維陣列(也可以理解為三個一維陣列),陣列有三個元素,這三個元素均為陣列,且陣列均存了兩個元素;圖示如圖:
![](https://img2020.cnblogs.com/blog/2080196/202007/2080196-20200725194429899-944997310.png)
1.2、動態初始化格式二:
`int [][]array = new int[3][];`
這裡與方式一不同,方式一是一維陣列的三個元素均為陣列,而這裡三個元素均為null,可以對每個一維陣列進行初始化:
`array[0] = new int[3]; array[1] = new int[6]; array[2] = new int[8];`
### 記憶體分析
二維陣列的記憶體實則和一維陣列沒有本質區別。只是將一維陣列存的資料改為了另一個數組的首地