最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java類(lèi)初始化執(zhí)行流程解析

 更新時(shí)間:2021年05月02日 07:31:18   作者:飄渺紅塵✨  
這篇文章主要介紹了Java類(lèi)初始化執(zhí)行流程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

 測(cè)試代碼:  

package com.test.ClassLaoderTest;

public  class test1 {
    public static String s_variable = "靜態(tài)變量";
    public String init_variable = "公開(kāi)的變量";
    private String p_variable = "私有的變量";
    //靜態(tài)代碼塊
    static {
        System.out.println(s_variable);
        System.out.println("靜態(tài)代碼塊初始化執(zhí)行了");
    }

    //初始化代碼塊
    {
        System.out.println(init_variable);
        System.out.println(p_variable);
        System.out.println("初始化代碼塊執(zhí)行淪");
    }

    //構(gòu)造方法
    public test1(){
        System.out.println("我是構(gòu)造方法");
    }

    public static void main(String[] args) {

    }

}

  直接運(yùn)行:

    

  main方法里面不做任何調(diào)用的情況下,自動(dòng)調(diào)用的是靜態(tài)代碼塊和靜態(tài)變量

  (2)調(diào)用靜態(tài)變量和靜態(tài)方法:

    測(cè)試代碼:    

package com.test.ClassLaoderTest;


public class test1 {
    public static String s_variable = "靜態(tài)變量";
    public String init_variable = "公開(kāi)的變量";
    private String p_variable = "私有的變量";
    //靜態(tài)代碼塊
    static {
        System.out.println(s_variable);
        System.out.println("靜態(tài)代碼塊初始化執(zhí)行了");
    }

    //初始化代碼塊
    {
        System.out.println(init_variable);
        System.out.println(p_variable);
        System.out.println("初始化代碼塊執(zhí)行淪");
    }

    //構(gòu)造方法
    public test1(){
        System.out.println("我是構(gòu)造方法");
    }

    //靜態(tài)方法
    public static void test1(){
        System.out.println("這是靜態(tài)方法");
    }
    public static void main(String[] args) {
        System.out.println(test1.s_variable);
        test1.test1();
    }

}

  運(yùn)行:

  

  結(jié)論:當(dāng)我調(diào)用靜態(tài)方法/靜態(tài)變量時(shí),只會(huì)家在靜態(tài)代碼塊,其余的代碼塊/構(gòu)造方法不會(huì)被加載

  (3)創(chuàng)建對(duì)象:

package com.test.ClassLaoderTest;


public class test1 {
    public static String s_variable = "靜態(tài)變量";
    public String init_variable = "公開(kāi)的變量";
    private String p_variable = "私有的變量";
    //靜態(tài)代碼塊
    static {
        System.out.println(s_variable);
        System.out.println("靜態(tài)代碼塊初始化執(zhí)行了");
    }

    //初始化代碼塊
    {
        System.out.println(init_variable);
        System.out.println(p_variable);
        System.out.println("初始化代碼塊執(zhí)行了");
    }

    //構(gòu)造方法
    public test1(){
        System.out.println("我是構(gòu)造方法");
    }

    //靜態(tài)方法
    public static void test1(){
        System.out.println("這是靜態(tài)方法");
    }
    public static void main(String[] args) {
        test1 t1 = new test1();
    }

}

  運(yùn)行結(jié)果:

    

  輸出內(nèi)容: 

靜態(tài)變量
靜態(tài)代碼塊初始化執(zhí)行了
公開(kāi)的變量
私有的變量
初始化代碼塊執(zhí)行了
我是構(gòu)造方法

  結(jié)論:當(dāng)創(chuàng)建對(duì)象/實(shí)例化的時(shí)候,調(diào)用順序:靜態(tài)代碼塊->初始化代碼->構(gòu)造方法,最后執(zhí)行的才是構(gòu)造方法

  (4)有繼承關(guān)系下的類(lèi)初始化執(zhí)行流程:

   環(huán)境:

    父類(lèi):

package com.test.ClassLaoderTest;

public class father {
    public static String s_variable = "父類(lèi)靜態(tài)變量";
    public String init_variable = "父類(lèi)公開(kāi)的變量";
    private String p_variable = "父類(lèi)私有的變量";
    //父類(lèi)靜態(tài)代碼塊
    static {
        System.out.println(s_variable);
        System.out.println("父類(lèi)靜態(tài)代碼塊初始化執(zhí)行了");
    }

    //父類(lèi)初始化代碼塊
    {
        System.out.println(init_variable);
        System.out.println(p_variable);
        System.out.println("父類(lèi)初始化代碼塊執(zhí)行了");
    }

    //構(gòu)造方法
    public father(){
        System.out.println("我是父類(lèi)構(gòu)造方法");
    }

    //父類(lèi)靜態(tài)方法
    public static void test1(){
        System.out.println("這是父類(lèi)靜態(tài)方法");
    }
}

    test1.java:

    繼承其父類(lèi)father:

package com.test.ClassLaoderTest;

public class test1 extends father{
    public static String s_variable = "子類(lèi)靜態(tài)變量";
    public String init_variable = "子類(lèi)公開(kāi)的變量";
    private String p_variable = "子類(lèi)私有的變量";
    //子類(lèi)靜態(tài)代碼塊
    static {
        System.out.println(s_variable);
        System.out.println("子類(lèi)靜態(tài)代碼塊初始化執(zhí)行了");
    }

    //子類(lèi)初始化代碼塊
    {
        System.out.println(init_variable);
        System.out.println(p_variable);
        System.out.println("子類(lèi)初始化代碼塊執(zhí)行了");
    }

    //子類(lèi)構(gòu)造方法
    public test1(){
        System.out.println("我是子類(lèi)構(gòu)造方法");
    }

    //子類(lèi)靜態(tài)方法
    public static void test1(){
        System.out.println("這是子類(lèi)靜態(tài)方法");
    }

    public static void main(String[] args) {
        
    }
}

  main方法不做任何操作,運(yùn)行:

    

 只要extends繼承了,優(yōu)先調(diào)用父類(lèi)靜態(tài)代碼塊

(5)有繼承關(guān)系下的調(diào)用靜態(tài)方法:

    修改子類(lèi)即可:

package com.test.ClassLaoderTest;

public class test1 extends father{
    public static String s_variable = "子類(lèi)靜態(tài)變量";
    public String init_variable = "子類(lèi)公開(kāi)的變量";
    private String p_variable = "子類(lèi)私有的變量";
    //子類(lèi)靜態(tài)代碼塊
    static {
        System.out.println(s_variable);
        System.out.println("子類(lèi)靜態(tài)代碼塊初始化執(zhí)行了");
    }

    //子類(lèi)初始化代碼塊
    {
        System.out.println(init_variable);
        System.out.println(p_variable);
        System.out.println("子類(lèi)初始化代碼塊執(zhí)行了");
    }

    //子類(lèi)構(gòu)造方法
    public test1(){
        System.out.println("我是子類(lèi)構(gòu)造方法");
    }

    //子類(lèi)靜態(tài)方法
    public static void test1(){
        System.out.println("這是子類(lèi)靜態(tài)方法");
    }

    public static void main(String[] args) {
        test1.test1();
        father.test1();
    }
}

  運(yùn)行:

      

  結(jié)果:

父類(lèi)靜態(tài)變量
父類(lèi)靜態(tài)代碼塊初始化執(zhí)行了
子類(lèi)靜態(tài)變量
子類(lèi)靜態(tài)代碼塊初始化執(zhí)行了
這是子類(lèi)靜態(tài)方法
這是父類(lèi)靜態(tài)方法

  main方法中,誰(shuí)優(yōu)先調(diào)用靜態(tài)方法,就優(yōu)先加載誰(shuí)

 (6)有繼承關(guān)系下的創(chuàng)建對(duì)象:

    代碼:

package com.test.ClassLaoderTest;

public class test1 extends father{
    public static String s_variable = "子類(lèi)靜態(tài)變量";
    public String init_variable = "子類(lèi)公開(kāi)的變量";
    private String p_variable = "子類(lèi)私有的變量";
    //子類(lèi)靜態(tài)代碼塊
    static {
        System.out.println(s_variable);
        System.out.println("子類(lèi)靜態(tài)代碼塊初始化執(zhí)行了");
    }

    //子類(lèi)初始化代碼塊
    {
        System.out.println(init_variable);
        System.out.println(p_variable);
        System.out.println("子類(lèi)初始化代碼塊執(zhí)行了");
    }

    //子類(lèi)構(gòu)造方法
    public test1(){
        System.out.println("我是子類(lèi)構(gòu)造方法");
    }

    //子類(lèi)靜態(tài)方法
    public static void test1(){
        System.out.println("這是子類(lèi)靜態(tài)方法");
    }

    public static void main(String[] args) {
        test1 t1 =new test1();
    }
}

  運(yùn)行:

   

  結(jié)果:

父類(lèi)靜態(tài)變量
父類(lèi)靜態(tài)代碼塊初始化執(zhí)行了
子類(lèi)靜態(tài)變量
子類(lèi)靜態(tài)代碼塊初始化執(zhí)行了
父類(lèi)公開(kāi)的變量
父類(lèi)私有的變量
父類(lèi)初始化代碼塊執(zhí)行了
我是父類(lèi)構(gòu)造方法
子類(lèi)公開(kāi)的變量
子類(lèi)私有的變量
子類(lèi)初始化代碼塊執(zhí)行了
我是子類(lèi)構(gòu)造方法

  結(jié)論:通過(guò)結(jié)果會(huì)發(fā)現(xiàn),不管是子類(lèi)還是父類(lèi)靜態(tài)代碼塊,靜態(tài)代碼塊在哪里都是爸爸級(jí)別,最先加載的,當(dāng)創(chuàng)建test1對(duì)象的時(shí)候,優(yōu)先加載的是父類(lèi)代碼塊,那么他的初始化執(zhí)行流程如下:父類(lèi)靜態(tài)代碼塊>子類(lèi)靜態(tài)代碼塊>父類(lèi)初始化代碼塊>父類(lèi)構(gòu)造方法>子類(lèi)代碼塊>子類(lèi)構(gòu)造方法

(7) 有繼承關(guān)系下的創(chuàng)建父類(lèi)對(duì)象:

package com.test.ClassLaoderTest;

public class test1 extends father{
    public static String s_variable = "子類(lèi)靜態(tài)變量";
    public String init_variable = "子類(lèi)公開(kāi)的變量";
    private String p_variable = "子類(lèi)私有的變量";
    //子類(lèi)靜態(tài)代碼塊
    static {
        System.out.println(s_variable);
        System.out.println("子類(lèi)靜態(tài)代碼塊初始化執(zhí)行了");
    }

    //子類(lèi)初始化代碼塊
    {
        System.out.println(init_variable);
        System.out.println(p_variable);
        System.out.println("子類(lèi)初始化代碼塊執(zhí)行了");
    }

    //子類(lèi)構(gòu)造方法
    public test1(){
        System.out.println("我是子類(lèi)構(gòu)造方法");
    }

    //子類(lèi)靜態(tài)方法
    public static void test1(){
        System.out.println("這是子類(lèi)靜態(tài)方法");
    }

    public static void main(String[] args) {
        father father = new father();
    }
}

 運(yùn)行:

  

  結(jié)果:

父類(lèi)靜態(tài)變量
父類(lèi)靜態(tài)代碼塊初始化執(zhí)行了
子類(lèi)靜態(tài)變量
子類(lèi)靜態(tài)代碼塊初始化執(zhí)行了
父類(lèi)公開(kāi)的變量
父類(lèi)私有的變量
父類(lèi)初始化代碼塊執(zhí)行了
我是父類(lèi)構(gòu)造方法

  結(jié)論:優(yōu)先執(zhí)行的是兩個(gè)類(lèi)的靜態(tài)代碼塊,然后是父類(lèi)型的代碼塊和構(gòu)造方法,而子類(lèi)的代碼塊和構(gòu)造方法沒(méi)有被執(zhí)行是因?yàn)闆](méi)有實(shí)例化子類(lèi),所以肯定是沒(méi)有他的,那么只有在創(chuàng)建對(duì)象的時(shí)候,才會(huì)調(diào)用代碼塊和構(gòu)造方法

到此這篇關(guān)于Java類(lèi)初始化執(zhí)行流程的文章就介紹到這了,更多相關(guān)Java類(lèi)初始化執(zhí)行流程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中多個(gè)@Scheduled定時(shí)器不執(zhí)行的解決方法

    java中多個(gè)@Scheduled定時(shí)器不執(zhí)行的解決方法

    在應(yīng)用開(kāi)發(fā)中經(jīng)常需要一些周期性的操作,比如每5分鐘執(zhí)行某一操作等,這篇文章主要給大家介紹了關(guān)于java中多個(gè)@Scheduled定時(shí)器不執(zhí)行的解決方法,需要的朋友可以參考下
    2023-04-04
  • StringBuffer與StringBuilder底層擴(kuò)容機(jī)制與常用方法

    StringBuffer與StringBuilder底層擴(kuò)容機(jī)制與常用方法

    這篇文章主要給大家介紹了StringBuffer、StringBuilder底層擴(kuò)容機(jī)制與常用方法,有感興趣的小伙伴跟著小編一起來(lái)學(xué)習(xí)吧
    2023-07-07
  • 基于Java在netty中實(shí)現(xiàn)線程和CPU綁定

    基于Java在netty中實(shí)現(xiàn)線程和CPU綁定

    這篇文章主要介紹了基于Java在netty中實(shí)現(xiàn)線程和CPU綁定,文章圍繞主題的相關(guān)內(nèi)容展開(kāi)詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Docker搭建前端Java的開(kāi)發(fā)環(huán)境詳解

    Docker搭建前端Java的開(kāi)發(fā)環(huán)境詳解

    相信每個(gè)人入職第一天就是搭建本地開(kāi)發(fā)環(huán)境,因?yàn)槲宜居玫氖莏ava,看見(jiàn)了多年不見(jiàn)的eclipse的圖標(biāo)出現(xiàn)我的電腦上,我是難過(guò)的。后來(lái)知道并不是我一個(gè)人有此感受。這篇文章是為了解決前后端開(kāi)發(fā)沒(méi)有徹底分離的坑,詳細(xì)的給大家介紹了利用Docker搭建前端Java的開(kāi)發(fā)環(huán)境。
    2016-10-10
  • Javaweb實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)代碼實(shí)例

    Javaweb實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)代碼實(shí)例

    這篇文章主要介紹了Javaweb實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • java遞歸讀取目錄下所有文件的方法

    java遞歸讀取目錄下所有文件的方法

    這篇文章主要為大家詳細(xì)介紹了java遞歸讀取目錄下所有文件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Java并發(fā)編程示例(一):線程的創(chuàng)建和執(zhí)行

    Java并發(fā)編程示例(一):線程的創(chuàng)建和執(zhí)行

    這篇文章主要介紹了Java并發(fā)編程示例(一):線程的創(chuàng)建和執(zhí)行,本文是系列文章的第一篇,需要的朋友可以參考下
    2014-12-12
  • 如何在java中使用Jython

    如何在java中使用Jython

    這篇文章主要介紹了如何在java中使用Jython,由于項(xiàng)目中需要用到Java調(diào)用Python的腳本,來(lái)實(shí)現(xiàn)一些功能,就對(duì)jython做了一些了解,通過(guò)jython可以實(shí)現(xiàn)java對(duì)python腳本的調(diào)用,需要的朋友可以參考一下
    2022-03-03
  • Spring超詳細(xì)講解BeanUtils改造

    Spring超詳細(xì)講解BeanUtils改造

    BeanUtils.copyProperties();確實(shí)為我們做了很多事情,雖然不能完美完成深拷貝,但是對(duì)于?po、vo、dto?的拷貝已經(jīng)足夠用了。但是其還是有一些不夠完美的地方,下面我們來(lái)探討一下有哪些不足以及改造
    2022-06-06
  • SpringBoot打印Banner的實(shí)現(xiàn)示例

    SpringBoot打印Banner的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot啟動(dòng)Banner的實(shí)現(xiàn)原理和打印流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01

最新評(píng)論

长春市| 十堰市| 柳江县| 安西县| 馆陶县| 怀集县| 郓城县| 苏尼特右旗| 五大连池市| 搜索| 离岛区| 大厂| 高唐县| 五原县| 武山县| 疏勒县| 莆田市| 佛坪县| 介休市| 武城县| 横山县| 九台市| 云霄县| 西充县| 双江| 彭泽县| 保康县| 灵武市| 镇沅| 香河县| 辽中县| 巴彦淖尔市| 新宁县| 饶平县| 隆德县| 商南县| 聂荣县| 兴业县| 桂东县| 泰来县| 沂水县|