一個數組可以分解為多個數組元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列、字元陣列、指標陣列、結構陣列等各種類別。那麼Java陣列在記憶體中是如何存放的?以下僅供參考!
Java中有兩種型別的陣列:
基本資料型別陣列;
物件陣列;
當一個物件使用關鍵字“new”建立時,會在堆上分配記憶體空間,然後返回物件的引用,這對陣列來說也是一樣的,因為陣列也是一個物件;
一維陣列
int[] arr = new int[3];
在以上程式碼中,arr變數存放了陣列物件的引用;如果你建立了空間大小為10的整形陣列,情況是一樣的',一個數組物件所佔的空間在堆上被分配,然後返回其引用;
二維陣列
那麼二維陣列是如何儲存的呢?事實上,在Java中只有一維陣列,二維陣列是一個存放了陣列的陣列,如下程式碼及示意圖:
int[ ][ ] arr = new int[3][ ];
arr[0] = new int[3];
arr[1] = new int[5];
arr[2] = new int[4];
對於多維陣列來說,道理是一樣的;
陣列物件及其引用存放在記憶體中的哪裡?
在Java中,陣列同樣是一個物件,所以物件在記憶體中如何存放同樣適用於陣列;
正如我們都知道的,java執行時資料區包括堆,JVM棧和其它。如下程式碼是一個小例子,那麼就讓我們來看看陣列和它的引用在記憶體中是如何存放的.
class A { int x; int y;
}
ic void m1() { int i = 0;
m2();
}public void m2() {
A a = new A();
}
...