在這五個階段中,加載九巡、驗證图贸、準(zhǔn)備和初始化這四個階段發(fā)生的順序是確定的.
而解析階段則不一定,它在某些情況下可以在初始化階段之后開始比庄,這是為了支持 Java 語言的運(yùn)行時綁定(也成為動態(tài)綁定或晚期綁定)求妹。另外注意這里的幾個階段是按順序開始,而不是按順序進(jìn)行或完成佳窑,因為這些階段通常都是互相交叉地混合進(jìn)行的制恍,通常在一個階段執(zhí)行的過程中調(diào)用或激活另一個階段。
?Java 中的綁定
綁定指的是把一個方法的調(diào)用與方法所在的類(方法主體)關(guān)聯(lián)起來
靜態(tài)綁定:即前期綁定神凑。在程序執(zhí)行前方法已經(jīng)被綁定净神,此時由編譯器或其它連接程序?qū)崿F(xiàn)何吝。針對 Java,簡單的可以理解為程序編譯期的綁定鹃唯。Java 當(dāng)中的方法只有 final爱榕,static,private 和構(gòu)造方法是前期綁定的坡慌。
動態(tài)綁定:即晚期綁定黔酥,也叫運(yùn)行時綁定。在運(yùn)行時根據(jù)具體對象的類型進(jìn)行綁定洪橘。在 Java 中跪者,幾乎所有的方法都是后期綁定的。
準(zhǔn)備階段
僅對static變量賦值為0.(final static 除外)
解析階段
相當(dāng)于c++鏈接階段