第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

java類對(duì)象的初始化順序

標(biāo)簽:
Java

在下面这个例子中,我们分别在父类和子类中测试了静态代码块、普通代码块、静态成员变量、普通成员变量、构造器、静态内部类

一:代码块及变量测试

class Field{
    public static String baseFieldInit(){
        System.out.println("父类全局变量");
        return "";
    }

    public static String baseStaticFieldInit(){
        System.out.println("父类静态变量");
        return "";
    }

    public static String fieldInit(){
        System.out.println("子类全局变量");
        return "";
    }

    public static String staticFieldInit(){
        System.out.println("子类静态变量");
        return "";
    }
}

class Father{
    static {
        System.out.println("父类静态代码块1");
    }

    private static String staticValue = Field.baseStaticFieldInit();

    static {
        System.out.println("父类静态代码块2");
    }

    {
        System.out.println("父类构造代码块1");
    }

    private String value = Field.baseFieldInit();

    {
        System.out.println("父类构造代码块2");
    }

    Father(){
        System.out.println("父类构造器");
    }
}

public class Children extends Father {

    static {
        System.out.println("子类静态代码块1");
    }
    private static String staticValue = Field.staticFieldInit();
    static {
        System.out.println("子类静态代码块2");
    }
    {
        System.out.println("子类构造代码块1");
    }
    private String value = Field.fieldInit();
    {
        System.out.println("子类构造代码块2");
    }

    public Children(){
        System.out.println("子类无参构造器");
    }

    private static class House{

        private static Children houseColor = new Children();
    }
	/**
	* 测试类
	*/
    public static void main(String[] args) {
        Children children = new Children();
        System.out.println("Children:"+children);
        System.out.println("*******************************");
        
		// 第二遍
		Children children1 = new Children();
        System.out.println("Children:"+children1);
        System.out.println("*******************************");
    }
}

二:测试结果

父类静态代码块1
父类静态变量
父类静态代码块2
子类静态代码块1
子类静态变量
子类静态代码块2
父类构造代码块1
父类全局变量
父类构造代码块2
父类构造器
子类构造代码块1
子类全局变量
子类构造代码块2
子类无参构造器
Children:com.zhixie.jvmclassload.demo.Children@65b54208
*******************************
父类构造代码块1
父类全局变量
父类构造代码块2
父类构造器
子类构造代码块1
子类全局变量
子类构造代码块2
子类无参构造器
Children:com.zhixie.jvmclassload.demo.Children@1be6f5c3
*******************************

三:测试静态内部类

public static void main(String[] args) {
	Children chouse = House.houseColor;
	System.out.println("ChildrenHouse:"+chouse);
	System.out.println("*******************************");
	Children chouse1 = House.houseColor;
	System.out.println("ChildrenHouse:"+chouse1);
	System.out.println("*******************************");
}
父类静态代码块1
父类静态变量
父类静态代码块2
子类静态代码块1
子类静态变量
子类静态代码块2
父类构造代码块1
父类全局变量
父类构造代码块2
父类构造器
子类构造代码块1
子类全局变量
子类构造代码块2
子类无参构造器
ChildrenHouse:com.zhixie.jvmclassload.demo.Children@65b54208
*******************************
ChildrenHouse:com.zhixie.jvmclassload.demo.Children@65b54208
*******************************

四:总结

经过我们反复调整顺序进行测试后,可得出如下结论:
1、静态代码块、静态成员变量只有第一次加载类时才会执行。
2、执行顺序为:父类静态代码块及父类静态成员变量(并列优先级)—>子类静态代码块及子类静态成员变量(并列优先级)—>父类普通代码块及父类成员变量—>父类构造器—>子类普通代码块及子类成员变量—>子类构造器。
3、静态内部类,只有在第一次调用的时候才会被初始化。

下一章我们会用今天的代码来学习一下类的加载顺序。

如果文章对您有帮助,请记得点赞关注哟~

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消