java對象的創建過程

今天在Thinking in Java上看到的一段話,關於java中對象的創建過程,很受啓發,以前很多問題在這一刻突然變得明瞭了。

假設有個Dog的類:

  1.即使沒有顯式地使用static關鍵字,構造方法實際上也是靜態方法。因此,當首次創建類型爲Dog的對象時(構造方法可以看成靜態方法),或者Dog類的靜態方法/靜態域首次被訪問時,Java解釋器必須查找類路徑,以定位Dog.class文件。

  2.然後載入Dog.class(後面會學到,這將創建一個Class對象),有關 靜態初始化的所有動作都會執行。因此,靜態初始化只在Class對象首次加載的時候進行一次。

  3.當用new Dog()創建對象的時候,首選將在堆(heap)上爲Dog對象分配足夠的存儲空間。

  4.這塊存儲空間會被清零,這就自動得將Dog對象中的所有基本類型數據都設置成了默認值(對數字來說就是0,對布爾型和字符型也相同),而引用則被設置成了null。

  5.執行所有出現於字段的初始化動作。

  6.執行構造方法。(會牽涉到很多動作,尤其是涉及繼承的時候)

發佈了2 篇原創文章 · 獲贊 21 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章