国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

靜態(tài)代碼塊在類被加載時(shí)自動(dòng)執(zhí)行的理解

opengps / 3816人閱讀

摘要:對(duì)靜態(tài)代碼塊執(zhí)行時(shí)機(jī)的認(rèn)識(shí)類的生命周期包括加載驗(yàn)證準(zhǔn)備解析初始化使用卸載等七個(gè)階段,其中驗(yàn)證準(zhǔn)備和解析三個(gè)部分統(tǒng)稱為連接。初始化的時(shí)候會(huì)包含靜態(tài)代碼塊的執(zhí)行和靜態(tài)變量的賦值初始化在裝載時(shí)不是必須觸發(fā)的,保證在初次主動(dòng)使用對(duì)象前會(huì)觸發(fā)。

對(duì)靜態(tài)代碼塊執(zhí)行時(shí)機(jī)的認(rèn)識(shí)

類的生命周期包括加載(Loading)、驗(yàn)證(Verification)、準(zhǔn)備(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸載(Unloading)等七個(gè)階段,其中驗(yàn)證、準(zhǔn)備和解析三個(gè)部分統(tǒng)稱為連接(Linking)。而類的加載指的就是從加載到初始化這五個(gè)階段。

初始化的時(shí)候會(huì)包含靜態(tài)代碼塊的執(zhí)行和靜態(tài)變量的賦值

初始化在裝載時(shí)不是必須觸發(fā)的,保證在初次主動(dòng)使用對(duì)象前會(huì)觸發(fā)。

例:

class A{
    static{
        System.out.print("1");
    }
    
    public A(){
        System.out.print("2");
    }
}

class B extends A{
    static{
        System.out.print("a");
    }
    
    public B(){
        System.out.print("b");
    }
}


public class Hello {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    A ab = new B();
    ab = new B();
}

}

輸出結(jié)果: 1a2b2b

靜態(tài)代碼塊和非靜態(tài)代碼塊的區(qū)別

靜態(tài)代碼塊,在虛擬機(jī)加載類的時(shí)候就會(huì)加載執(zhí)行,而且只執(zhí)行一次;

非靜態(tài)代碼塊,在創(chuàng)建對(duì)象的時(shí)候(即new一個(gè)對(duì)象的時(shí)候)執(zhí)行,每次創(chuàng)建對(duì)象都會(huì)執(zhí)行一次

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/65279.html

相關(guān)文章

  • 6.java 代碼

    摘要:構(gòu)造塊優(yōu)先于構(gòu)造函數(shù)執(zhí)行,如果存在多個(gè)構(gòu)造代碼塊,則執(zhí)行順序按照定義的順序依次執(zhí)行。靜態(tài)代碼塊在中使用關(guān)鍵字聲明的代碼塊。同步代碼塊需要寫在方法中。 代碼塊 在java中用{}括起來(lái)的稱為代碼塊,代碼塊可分為以下四種: 普通代碼塊 構(gòu)造代碼塊 靜態(tài)代碼塊 同步代碼塊 普通代碼塊 在方法或語(yǔ)句中出現(xiàn)的{}就稱為普通代碼塊。普通代碼塊和一般語(yǔ)句的執(zhí)行順序由他們?cè)诖a中出現(xiàn)的次序決定,先...

    tuantuan 評(píng)論0 收藏0
  • 什么是面向?qū)ο螅?/b>

    摘要:第一章面向?qū)ο笮“资且婚T完全面向?qū)ο蟮木幊陶Z(yǔ)言嗯什么是面向過(guò)程什么又是面向?qū)ο竽卮罄性谖覀冋竭M(jìn)入學(xué)習(xí)這部分前,了解一下面向過(guò)程和面向?qū)ο筮@兩個(gè)概念,對(duì)于我們接下來(lái)的學(xué)習(xí)有很大的好處。這一部分我們會(huì)在面向?qū)ο髮W(xué)習(xí)結(jié)束后進(jìn)行系統(tǒng)的整理和總結(jié)。 showImg(https://segmentfault.com/img/remote/1460000019303357); 第一章 面向?qū)ο?小...

    DirtyMind 評(píng)論0 收藏0
  • Java面試 | 002

    摘要:與的差異為解釋性語(yǔ)言而為編譯型語(yǔ)言。為面向?qū)ο笳Z(yǔ)言,則兼具面向過(guò)程和面向過(guò)程編程的特點(diǎn)。就垃圾回收而言,中有析構(gòu)函數(shù),而則是方法。提供了分布式對(duì)象的等庫(kù)。公眾號(hào)貓說(shuō)現(xiàn)架構(gòu)設(shè)計(jì)碼農(nóng)兼創(chuàng)業(yè)技術(shù)顧問(wèn),不羈平庸,熱愛開源,雜談程序人生與不定期干貨。 本博客 貓叔的博客,轉(zhuǎn)載請(qǐng)申明出處 前言 本系列為貓叔綜合整理的Java面試題系列,如有雷同不勝榮幸。 Java與C/C++的差異? 1、jav...

    megatron 評(píng)論0 收藏0
  • 設(shè)計(jì)模式:?jiǎn)卫J?(關(guān)于餓漢式和懶漢式)

    摘要:在寫單例模式的代碼之前,我們先簡(jiǎn)單了解一下兩個(gè)知識(shí)點(diǎn),關(guān)于類的加載順序和關(guān)鍵字。懶漢和餓漢在程序編寫上,一般將單例模式分為兩種,分別是餓漢式和懶漢式,餓漢式在類加載時(shí)就完成了初始化,所以類加載比較慢,但獲取對(duì)象的速度快。 定義 單例模式是比較常見的一種設(shè)計(jì)模式,目的是保證一個(gè)類只能有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例,避免頻繁創(chuàng)建對(duì)象,節(jié)約內(nèi)存。 單例模式的應(yīng)用場(chǎng)景很多, 比如...

    Darkgel 評(píng)論0 收藏0
  • java面向?qū)ο?上)

    摘要:根據(jù)出現(xiàn)的位置,作為對(duì)象的默認(rèn)引用有兩種情形構(gòu)造器中引用該構(gòu)造器正在初始化的對(duì)象。在構(gòu)造器中代表該構(gòu)造器正在初始化的對(duì)象。用于限定該對(duì)象調(diào)用它從父類得到的實(shí)例變量和方法。 子類繼承父類就可以繼承到父類的成員變量和方法。如果訪問(wèn)控制允許,子類實(shí)例可以直接調(diào)用父類里定義的方法。 如果多個(gè)重載的構(gòu)造器里包含了相同的初始化代碼,則可以把這些初始化代碼放置在普通代碼塊里完成,初始化塊總在構(gòu)...

    liaosilzu2007 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<