資料結構(java)---物件的記憶體表示
阿新 • • 發佈:2019-01-23
物件在記憶體主要分為二種組成,一個是儲存非靜態的類的屬性物件區,另一個是儲存方法的方法區(包括靜態方法和非靜態方法),如果有靜態常量的話,靜態常量將儲存在靜態常量區中。
因為一個物件例項的屬性是變化的,但是方法和靜態常量是不變,這樣儲存可以更加程度的利用記憶體。
class A{
private int x ; // 普通屬性
public static int y = 2; // 靜態常量
public void add(){} ; // 普通方法
public static void sub(){} ; // 靜態方法
}
--->例項物件A的記憶體表示</pre><pre name="code" class="java"> new A() ; // 例項化物件
!如果涉及到類的繼承關係,子類除了包括本人自己的屬性之外,父類的屬性將全部包括
!字串是一種特殊的物件,在java中,串物件統一儲存在串池中,串池中的資料不允許刪除且不能重複,所以字串物件已經建立,就不能再變。
!陣列物件在記憶體中是一段連續的地址,建立好資料的長度後就不能再改變了,並且陣列中每一個元素的所佔的大小相同,所以陣列物件在直接查詢的時候很快,但是在做刪除和修改的時候很吃力;
如果陣列元素使我們自己定義的物件,那麼在資料中的每一個元素其實儲存的是我們自己定義的物件例項在記憶體中的首地址,在java中任何物件都不允許包含其他物件,只能儲存其他物件的指標(儲存著其他物件在記憶體中的首地址資訊)。