創(chuàng)建一個對象的過程(new)

https://blog.csdn.net/qq_27495157/article/details/81262921

  1. 首先會有JVM去內(nèi)存中的 方法區(qū) 查找該類的class信息,如果有直接拿來用,如果沒有,去磁盤中查找.class文件,并由類加載器(ClassLoader)進行加載到方法區(qū)。

  2. 加載時遇到靜態(tài)成員變量,加載到方法區(qū)的靜態(tài)區(qū)域,非靜態(tài)成員變量加載到非靜態(tài)區(qū)域。然后對靜態(tài)變量進行默認初始化和顯式初始化。靜態(tài)代碼塊會在加載時執(zhí)行,非靜態(tài)代碼塊在創(chuàng)建實例時執(zhí)行。先加載父類,再加載子類。

  3. 靜態(tài)方法和非靜態(tài)方法在調(diào)用時才會執(zhí)行。

  4. new一個對象時,在堆內(nèi)存中開辟一塊空間,給開辟的空間分配一個地址,把非靜態(tài)成員變量加載到開辟的空間下,進行默認初始化。

  5. 調(diào)用構(gòu)造函數(shù),入棧執(zhí)行,先執(zhí)行隱式三步:調(diào)用super函數(shù),對非靜態(tài)成員顯式初始化,執(zhí)行構(gòu)造代碼塊。再執(zhí)行構(gòu)造函數(shù)的代碼。

  6. 構(gòu)造函數(shù)彈棧,把空間分配的地址賦給引用對象。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡單分配策略的問題地址空間不隔離內(nèi)存使用效率低程序運行的地址不確定 關于...
    SeanCST閱讀 8,139評論 0 27
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,675評論 1 32
  • 整理來自互聯(lián)網(wǎng) 1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工具...
    Ncompass閱讀 1,620評論 0 6
  • 一:java概述: 1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)...
    慕容小偉閱讀 1,953評論 0 10
  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,817評論 0 11

友情鏈接更多精彩內(nèi)容