摘要:對靜態(tài)代碼塊執(zhí)行時機的認識類的生命周期包括加載驗證準備解析初始化使用卸載等七個階段,其中驗證準備和解析三個部分統(tǒng)稱為連接。初始化的時候會包含靜態(tài)代碼塊的執(zhí)行和靜態(tài)變量的賦值初始化在裝載時不是必須觸發(fā)的,保證在初次主動使用對象前會觸發(fā)。
對靜態(tài)代碼塊執(zhí)行時機的認識
類的生命周期包括加載(Loading)、驗證(Verification)、準備(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸載(Unloading)等七個階段,其中驗證、準備和解析三個部分統(tǒng)稱為連接(Linking)。而類的加載指的就是從加載到初始化這五個階段。
初始化的時候會包含靜態(tài)代碼塊的執(zhí)行和靜態(tài)變量的賦值
初始化在裝載時不是必須觸發(fā)的,保證在初次主動使用對象前會觸發(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(); } }
靜態(tài)代碼塊和非靜態(tài)代碼塊的區(qū)別輸出結(jié)果: 1a2b2b
靜態(tài)代碼塊,在虛擬機加載類的時候就會加載執(zhí)行,而且只執(zhí)行一次;
非靜態(tài)代碼塊,在創(chuàng)建對象的時候(即new一個對象的時候)執(zhí)行,每次創(chuàng)建對象都會執(zhí)行一次
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65279.html
摘要:構(gòu)造塊優(yōu)先于構(gòu)造函數(shù)執(zhí)行,如果存在多個構(gòu)造代碼塊,則執(zhí)行順序按照定義的順序依次執(zhí)行。靜態(tài)代碼塊在中使用關(guān)鍵字聲明的代碼塊。同步代碼塊需要寫在方法中。 代碼塊 在java中用{}括起來的稱為代碼塊,代碼塊可分為以下四種: 普通代碼塊 構(gòu)造代碼塊 靜態(tài)代碼塊 同步代碼塊 普通代碼塊 在方法或語句中出現(xiàn)的{}就稱為普通代碼塊。普通代碼塊和一般語句的執(zhí)行順序由他們在代碼中出現(xiàn)的次序決定,先...
摘要:第一章面向?qū)ο笮“资且婚T完全面向?qū)ο蟮木幊陶Z言嗯什么是面向過程什么又是面向?qū)ο竽卮罄性谖覀冋竭M入學習這部分前,了解一下面向過程和面向?qū)ο筮@兩個概念,對于我們接下來的學習有很大的好處。這一部分我們會在面向?qū)ο髮W習結(jié)束后進行系統(tǒng)的整理和總結(jié)。 showImg(https://segmentfault.com/img/remote/1460000019303357); 第一章 面向?qū)ο?小...
摘要:與的差異為解釋性語言而為編譯型語言。為面向?qū)ο笳Z言,則兼具面向過程和面向過程編程的特點。就垃圾回收而言,中有析構(gòu)函數(shù),而則是方法。提供了分布式對象的等庫。公眾號貓說現(xiàn)架構(gòu)設(shè)計碼農(nóng)兼創(chuàng)業(yè)技術(shù)顧問,不羈平庸,熱愛開源,雜談程序人生與不定期干貨。 本博客 貓叔的博客,轉(zhuǎn)載請申明出處 前言 本系列為貓叔綜合整理的Java面試題系列,如有雷同不勝榮幸。 Java與C/C++的差異? 1、jav...
摘要:在寫單例模式的代碼之前,我們先簡單了解一下兩個知識點,關(guān)于類的加載順序和關(guān)鍵字。懶漢和餓漢在程序編寫上,一般將單例模式分為兩種,分別是餓漢式和懶漢式,餓漢式在類加載時就完成了初始化,所以類加載比較慢,但獲取對象的速度快。 定義 單例模式是比較常見的一種設(shè)計模式,目的是保證一個類只能有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例,避免頻繁創(chuàng)建對象,節(jié)約內(nèi)存。 單例模式的應(yīng)用場景很多, 比如...
摘要:根據(jù)出現(xiàn)的位置,作為對象的默認引用有兩種情形構(gòu)造器中引用該構(gòu)造器正在初始化的對象。在構(gòu)造器中代表該構(gòu)造器正在初始化的對象。用于限定該對象調(diào)用它從父類得到的實例變量和方法。 子類繼承父類就可以繼承到父類的成員變量和方法。如果訪問控制允許,子類實例可以直接調(diào)用父類里定義的方法。 如果多個重載的構(gòu)造器里包含了相同的初始化代碼,則可以把這些初始化代碼放置在普通代碼塊里完成,初始化塊總在構(gòu)...
閱讀 1945·2021-10-11 10:59
閱讀 1050·2021-09-07 09:59
閱讀 2246·2021-08-27 16:17
閱讀 2802·2019-08-30 15:54
閱讀 2287·2019-08-30 12:58
閱讀 1791·2019-08-30 12:53
閱讀 1482·2019-08-28 18:13
閱讀 742·2019-08-26 13:35