Java程序執行過程

每個Java程序執行前都必須經過編譯、加載、連接和初始化這幾個階段

編譯:創建完源文件之後,程序會先被編譯爲.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然後引用,否則直接引用。如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報“cant find symbol”的錯誤。編譯後的字節碼文件格式主要分爲兩部分:常量池方法字節碼。常量池記錄的是代碼出現過的所有token(類名,成員變量名等等)以及符號引用(方法引用,成員變量引用等等);方法字節碼放的是類中各個方法的字節碼

加載:加載是指將編譯後的java類文件(.class文件)中的二進制數據讀入內存,並將其放在運行時數據區的方法區內,然後再堆區創建一個java.lang.Class對象,用來封裝類在方法區的數據結構。即加載後最終得到的是Class對象,並且更加值得注意的是:該Java.lang.Class對象是單實例的,無論這個類創建了對少個對象,它的Class對象是唯一的!而加載並獲取該Class對象可以通過三種途徑:Class.forName(類的全名稱)、實例對象.class(屬性)、實例對象getClass()。
連接和初始化階段,其實靜態變量經過了兩次賦值:第一次是靜態變量類型的默認值;第二次是我們真正賦給靜態變量的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章