javac編譯原理 源文件----->類文件java
詞法分析------>語法分析------>語義分析----字節碼生成器------.class 文件spa
javap 反編譯3d
之因此能處處運行就是 由於 class文件 就是 經過 javaformat 規範code
java 類加載機制:orm
類文件要運行在JVM中,裝載、連接、初始化對象
裝載:blog
① 就是查找和導入class 文件 將類文件轉換爲 二進制流 ClassLoader 類加載,不一樣的類加載器,加載不一樣區域的class文件內存
② 講二進制流的靜態結構,轉換到 運行時數據區的某一塊區域【方法區】io
同名的類 由上層去加載,這種模式叫作 雙親委派模型 (由父親去加載,父親加載到了 本身就不去加載了) 若是想打破這種規律,就是 重寫 classLoader裏面的 findClass方法 此處須要作實驗 破壞雙親委派模型編譯
雙親委派模型工做過程是:若是一個類加載器收到類加載的請求,它首先不會本身去嘗試加載這個類,而是把這個請求委派給父類加載器完成。每一個類加載器都是如此,只有當父加載器在本身的搜索範圍內找不到指定的類時(即ClassNotFoundException
),子加載器纔會嘗試本身去加載。
連接:
1、驗證
驗證數據的有效性
2、準備
爲類的靜態變量分配內存、初始化值 爲默認值
3、解析
把類中的符號引號轉化爲直接引用
初始化:
類的靜態變量,賦值真正的值