1. 程式人生 > 其它 >陣列初始化和記憶體分析

陣列初始化和記憶體分析

記憶體分析

  • 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!

    •