詳解Java中類的加載順序
本文介紹的是Java中類的加載順序,下面來(lái)看看詳細(xì)的介紹:
1、虛擬機(jī)在首次加載Java類時(shí),會(huì)對(duì)靜態(tài)初始化塊、靜態(tài)成員變量、靜態(tài)方法進(jìn)行一次初始化
2、只有在調(diào)用new方法時(shí)才會(huì)創(chuàng)建類的實(shí)例
3、類實(shí)例創(chuàng)建過(guò)程:按照父子繼承關(guān)系進(jìn)行初始化,首先執(zhí)行父類的初始化塊部分,然后是父類的構(gòu)造方法;再執(zhí)行本類繼承的子類的初始化塊,最后是子類的構(gòu)造方法
4、類實(shí)例銷毀時(shí)候,首先銷毀子類部分,再銷毀父類部分
示例
public class Parent
{
public static int t = parentStaticMethod2();
{
System.out.println("父類非靜態(tài)初始化塊");
}
static
{
System.out.println("父類靜態(tài)初始化塊");
}
public Parent()
{
System.out.println("父類的構(gòu)造方法");
}
public static int parentStaticMethod()
{
System.out.println("父類類的靜態(tài)方法");
return 10;
}
public static int parentStaticMethod2()
{
System.out.println("父類的靜態(tài)方法2");
return 9;
}
@Override
protected void finalize() throws Throwable
{
// TODO Auto-generated method stub
super.finalize();
System.out.println("銷毀父類");
}
}
public class Child extends Parent
{
{
System.out.println("子類非靜態(tài)初始化塊");
}
static
{
System.out.println("子類靜態(tài)初始化塊");
}
public Child()
{
System.out.println("子類的構(gòu)造方法");
}
public static int childStaticMethod()
{
System.out.println("子類的靜態(tài)方法");
return 1000;
}
@Override
protected void finalize() throws Throwable
{
// TODO Auto-generated method stub
super.finalize();
System.out.println("銷毀子類");
}
}
public class Test
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Parent.parentStaticMethod();
// Child child = new Child();
}
}
輸出
父類的靜態(tài)方法2 父類靜態(tài)初始化塊 父類類的靜態(tài)方法
類中static 方法在第一次調(diào)用時(shí)加載,類中static成員按在類中出現(xiàn)的順序加載。當(dāng)調(diào)用靜態(tài)方法2時(shí)輸出
父類的靜態(tài)方法2 父類靜態(tài)初始化塊 父類的靜態(tài)方法2
注釋掉Parent.parentStaticMethod();
去掉注釋Child child = new Child();
父類的靜態(tài)方法2 父類靜態(tài)初始化塊 子類靜態(tài)初始化塊 父類非靜態(tài)初始化塊 父類的構(gòu)造方法 子類非靜態(tài)初始化塊 子類的構(gòu)造方法
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
SpringBoot?Security權(quán)限控制自定義failureHandler實(shí)例
這篇文章主要為大家介紹了SpringBoot?Security權(quán)限控制自定義failureHandler實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Java 在PPT中添加文本和圖片超鏈接的實(shí)現(xiàn)方法
這篇文章主要介紹了Java 在PPT中添加文本和圖片超鏈接的實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
使用java?實(shí)現(xiàn)mqtt兩種常用方式
在開(kāi)發(fā)MQTT時(shí)有兩種方式一種是使用Paho Java 原生庫(kù)來(lái)完成,一種是使用spring boot 來(lái)完成,這篇文章主要介紹了使用java?實(shí)現(xiàn)mqtt兩種方式,需要的朋友可以參考下2022-11-11
了解java架構(gòu)之微服務(wù)架構(gòu)—雪崩效應(yīng)
這篇文章主要介紹了了解java架構(gòu)之微服務(wù)架構(gòu)—雪崩效應(yīng),微服務(wù)化產(chǎn)品線,每一個(gè)服務(wù)專心于自己的業(yè)務(wù)邏輯,并對(duì)外提供相應(yīng)的接口,看上去似乎很明了,其實(shí)還有很多的東西需要考慮,,需要的朋友可以參考下2019-06-06
Java使用DFA算法實(shí)現(xiàn)過(guò)濾多家公司自定義敏感字功能詳解
這篇文章主要介紹了Java使用DFA算法實(shí)現(xiàn)過(guò)濾多家公司自定義敏感字功能,結(jié)合實(shí)例形式分析了DFA算法的實(shí)現(xiàn)原理及過(guò)濾敏感字的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08

