Java中的陣列和記憶體分配
阿新 • • 發佈:2018-11-02
理解陣列
- 概念:陣列是儲存同一種資料型別多個元素的集合。也可以看成是一個容器。
陣列既可以儲存基本資料型別,也可以儲存引用資料型別,只要所有的陣列元素具有相同的資料型別即可 - 定義陣列的方法:
①:type[] arrayName;
(推薦使用這種方式)
②:type arrayName[];
注意:定義陣列時不能指定陣列的長度 - 陣列的初始化
Java中的陣列必須先初始化,才能使用,初始化就是給陣列中的元素分配記憶體空間和賦值
①:靜態初始化:初始化時指定每個陣列元素的初始值,由系統決定陣列長度。
語法格式:
arrayName = new type[]{element1, element2, element3, ...};
或者簡寫成:type[] arrayName = new type{element1, element2, element3, ...};
(在定義時直接完成初始化)
例如:int[] intArr = new int[]{1, 2, 3, 4};
或者:int[] intArr = {1,2,3,4};
②:動態初始化:只指定陣列的長度,由系統為每個陣列元素分配預設值
格式:type[] arrayName = new type[length];
舉例:int[] intArr = new int[3];
說明:定義了一個int型別的陣列,這個陣列可以存放3個int型別的值
二維陣列
定義二維陣列的三種格式:
type arrayName[][] = new type[m][n];
type[][] arrayName = new type[m][n];//推薦
type[] arrayName[] = new type[m][n];
舉例:
定義一個二維陣列,int[][] arr = new int[3][2]
,二維陣列中有3個一維陣列,分別為arr[0],arr[1],arr[2],
這三個一維陣列又分別包含兩個元素,比如陣列arr[0]
中有兩個元素,分別為arr[0][0]
和arr[0][1]
說明:二維陣列就是陣列中的陣列
Java中的記憶體分配問題
我們知道,變數的初始化需要在記憶體中分配記憶體,所以,為了提高記憶體的執行效率,對記憶體空間 進行了不同區域的劃分,每一份區域都有特定的處理資料和記憶體管理的方式;
Java中的記憶體結構:棧、堆、方法區、本地方法區、暫存器
- 棧記憶體:暫時儲存,用於
儲存區域性變數
,當資料使用完,所佔空間會自動釋放。 - 堆記憶體:
儲存陣列和物件
,通過 new 建立的例項都存放在堆記憶體中,任何的”引用資料型別”的”值”都存在堆裡。 - 方法區:
靜態儲存區、建構函式、常量池、執行緒池,方法位元組碼
- 本地方法區:被系統佔用,window 系統佔用 ,被定義為
native 的方法
。 - 暫存器:儲存正要準備交給
CPU
處理的位元組碼