JAVA 基本型別陣列的初始化(原理篇)
本頁面更新日期: 2016年06月25日
前言
在之前的學習中, 我們已經會 初始化陣列了. 但是你真的瞭解其內部都發生了什麼嘛? 下面讓我們探究一下. 扒光陣列的華麗外衣, 嘿嘿.
對於 基本型別陣列而言, 陣列元素的值 是直接儲存在 對應的陣列元素中.
因此, 初始化陣列時, 先為該陣列分配記憶體空間, 然後直接將陣列元素的值 存入對應的陣列元素中去.
看上圖, 其中 1,2,3,4,5 是陣列元素的值.
1,2,3,4,5 外面的長方形外框, 就是陣列元素.
根據這個圖, 我們可以推斷出, 這是一個 int[] 陣列, 它的長度是5, 就是說具有5個數組元素, 而這5個數組元素裡面存放的值 分別是 1,2,3,4,5下面讓我們寫份程式碼試試, 定義一個 int[]型別的陣列變數, 採用動態初始化的方式, 然後顯式的為每個陣列元素賦值. 最後將陣列 輸出出來.
public class PrimitiveArrayTest
{
public static void main(String[] args)
{
//定義一個 int[] 型別的陣列變數
int[] iArr;
//動態初始化陣列, 陣列長度為5
iArr = new int[5];
//採用迴圈方式為每個陣列元素賦值
for (int i = 0; i < iArr.length; i++)
{
iArr[i] = i + 10 ;
}
//使用 foreach 迴圈輸出陣列
for (int temp : iArr)
{
System.out.println(temp);
}
}
}
自己寫然後執行看下, 接著我們來說道說道, 這裡面到底發生了什麼.
執行第一行程式碼 int[] iArr; 時
僅僅是定義了一個數組變數, 此時的記憶體如下圖:
上圖可以看出, 執行了 int[] iArr 程式碼後.
僅在 棧記憶體 中定義了一個空引用(就是 iArr陣列變數)
這個引用並未指向任何有效的記憶體.當執行 iArr = new int[5] 動態初始化後, 系統就開始搞事了. 會為其分配記憶體空間, 並分配預設的初始值: 所有陣列元素都被賦值為 0 .
此時記憶體情況如下:
此時 iArr 陣列的每個陣列元素的值 都是 0
當迴圈為該陣列的每個 陣列元素 賦值後
此時每個陣列元素的值 都變成程式顯式指定的值.
那麼如下圖:
從上圖中可以看出, 基本型別陣列的儲存示意圖.
每個陣列元素的值 都是直接儲存在對應的記憶體中.
結尾
如果你想學習更多JAVA知識, 可以 點我進入目錄頁