陣列初始化和記憶體分析
阿新 • • 發佈:2022-03-15
記憶體分析
-
Java記憶體分析:
-
堆(賦值在堆裡)
-
存放new的物件和陣列
-
可以被所有的執行緒共享,不會存放別的物件引用
-
-
棧(陣列宣告在棧裡)
-
存放基本變數型別(會包含這個基本型別的具體數值)
-
引用物件的變數(會存放這個引用在堆裡的具體地址)
-
-
方法區
-
可以被所有的執行緒共享
-
包含了所有的class和static變數
-
-
三種初始化
-
靜態初始化 建立 + 賦值
int[] a = {1,2,3};
Man[] mans = {new Man(1,1),new Man(2,2)};
-
動態初始化 包含預設初始化
-
int[] b = new int[10];
b[0] = 10;
-
-
陣列的預設初始化
-
陣列是引用型別,它的元素相當於類的例項變數,因此陣列一經分配空間,其中的每個元素也按照例項變數同樣的方式被隱式初始化。
-
陣列的四個基本特點:
-
長度確定。一旦建立,大小不可改變
-
元素必須是相同型別,不允許出現混合型別
-
陣列的元素可以是任何資料型別,包括基本型別和引用型別。
-
陣列變數屬於引用型別,陣列也可以看成是物件,陣列中的每個元素相當於該物件的成員變數。
陣列本身就是物件,Java中物件是在堆中的,因此陣列無論儲存原始型別還是其他物件型別,陣列物件本身是在堆裡的。
陣列邊界:
-
下表的合法區間:【0,length-1】
-
ArrayIndexOutOfBoundsException:陣列下標越界異常!
-
小結:
-
陣列是相同資料型別的有序集合
-
陣列也是物件。陣列元素相當於物件的成員變數
-
陣列長度是確定的,不可變的。如果越界,則報:ArrayIndexOufOfBounds!
-
-