摘要:構(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)的次序決定,先出現(xiàn)先執(zhí)行。
普通代碼塊一般過來限制變量的作用域,防止代碼過多時可能產(chǎn)生的變量命名沖突。
示例:
public class testDemo { public static void main(String[] args ) { { int x = 3; System.out.println("普通代碼塊中的變量x=" + x); } int x = 1; System.out.println("主方法中的變量想=" + x); { int y = 7; System.out.println("普通代碼塊中的變量y=" + y); } } }構(gòu)造代碼塊
在類中直接使用沒有任何修飾符的{}聲明的代碼塊就是構(gòu)造塊。
和構(gòu)造函數(shù)的作用類似,都能對對象進行初始化,并且只要實例化一個對象,構(gòu)造代碼塊都會執(zhí)行一次。
構(gòu)造塊優(yōu)先于構(gòu)造函數(shù)執(zhí)行,如果存在多個構(gòu)造代碼塊,則執(zhí)行順序按照定義的順序依次執(zhí)行。
示例:
public class testDemo { public static void main(String[] args ) { Test t = new Test(); } } class Test{ { //構(gòu)造代碼塊 System.out.println("構(gòu)造代碼塊1。"); } //構(gòu)造函數(shù) public Test(){ System.out.println("無參構(gòu)造函數(shù)。"); } { //構(gòu)造代碼塊 System.out.println("構(gòu)造代碼塊2。"); } } 輸出結(jié)果: 構(gòu)造代碼塊1。 構(gòu)造代碼塊2。 無參構(gòu)造函數(shù)。靜態(tài)代碼塊
在java中使用static關(guān)鍵字聲明的代碼塊。靜態(tài)塊用于初始化類,為類的屬性初始化。
靜態(tài)代碼塊在類被加載的時候就運行了,而且只運行一次,并且優(yōu)先于各種代碼塊以及構(gòu)造函數(shù)。如果一個類中有多個靜態(tài)代碼塊,會按照書寫順序依次執(zhí)行。
一般情況下,如果有些代碼需要在項目啟動的時候就執(zhí)行,這時候就需要靜態(tài)代碼塊。比如一個項目啟動需要加載的很多配置文件等資源,我們就可以都放入靜態(tài)代碼塊中。
示例:
public class testDemo { public static void main(String[] args ) { Test t1 = new Test(); System.out.println("**********"); Test t2 = new Test(); } } class Test{ static { //靜態(tài)代碼塊 System.out.println("靜態(tài)代碼塊1。"); } //構(gòu)造函數(shù) public Test(){ System.out.println("無參構(gòu)造函數(shù)。"); } static { //靜態(tài)代碼塊 System.out.println("靜態(tài)代碼塊2。"); } } 輸出結(jié)果: 靜態(tài)代碼塊1。 靜態(tài)代碼塊2。 無參構(gòu)造函數(shù)。 ********** 無參構(gòu)造函數(shù)。同步代碼塊
使用synchronized(){}包裹起來的代碼塊,在多線程環(huán)境下,對共享數(shù)據(jù)的讀寫操作是需要互斥進行的,否則會導(dǎo)致數(shù)據(jù)的不一致性。同步代碼塊需要寫在方法中。
代碼塊執(zhí)行順序靜態(tài)代碼塊 > 構(gòu)造代碼塊 > 構(gòu)造函數(shù)
示例:
public class testDemo { public static void main(String[] args ) { Test t = new Test(); } } class Test{ { //構(gòu)造代碼塊 System.out.println("構(gòu)造代碼塊"); } //構(gòu)造函數(shù) public Test(){ System.out.println("構(gòu)造函數(shù)"); } static { //靜態(tài)代碼塊 System.out.println("靜態(tài)代碼塊"); } } 輸出結(jié)果: 靜態(tài)代碼塊 構(gòu)造代碼塊 構(gòu)造函數(shù)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/73497.html
摘要:異常也就是指程序運行時發(fā)生錯誤,而異常處理就是對這些錯誤進行處理和控制。有兩個重要的子類異常和錯誤,二者都是異常處理的重要子類,各自都包含大量子類。需要注意的是,一旦某個捕獲到匹配的異常類型,將進入異常處理代碼。 1,異常現(xiàn)象 程序錯誤分為三種:1,編譯錯誤;2,運行時錯誤;3,邏輯錯誤。 編譯錯誤是因為程序沒有遵循語法規(guī)則,編譯程序能夠自己發(fā)現(xiàn)并且提示我們錯誤的原因和位置,這...
摘要:目錄介紹問題匯總具體問題好消息博客筆記大匯總年月到至今,包括基礎(chǔ)及深入知識點,技術(shù)博客,學(xué)習(xí)筆記等等,還包括平時開發(fā)中遇到的匯總,當(dāng)然也在工作之余收集了大量的面試題,長期更新維護并且修正,持續(xù)完善開源的文件是格式的同時也開源了生活博客,從年 目錄介紹 00.Java問題匯總 01.具體問題 好消息 博客筆記大匯總【16年3月到至今】,包括Java基礎(chǔ)及深入知識點,Android技...
摘要:事實上,所謂的同步就是指阻塞式操作,而異步就是非阻塞式操作。中可以通過設(shè)值注入方法注入和構(gòu)造器注入實現(xiàn),推薦使用的方式為設(shè)值注入。 寫在前面 春天來了,萬物復(fù)蘇的季節(jié)到了. 許多程序猿安奈不住生理需求,我要漲工資,我要跳槽. 畢竟金三銀四嘛. 那么要從眾多的面試者中獲得求職機會,我們就要面對很多的面試題. 程序猿是最煩面試題的.面試的公司也煩,面試的人也煩. 但是沒辦法.面試的人魚龍混...
摘要:到十二月份,公司開始第二波裁員,我決定主動拿賠償走人。加一個小插曲上面的題是餓了嗎面試問到的。想去的公司沒有面試好,不要氣餒,繼續(xù)加油準(zhǔn)備。避免打擊自信心。 回顧一下自己這段時間的經(jīng)歷,九月份的時候,公司通知了裁員,我匆匆忙忙地出去面了幾家,但最終都沒有拿到offer,我感覺今年的寒冬有點冷。到十二月份,公司開始第二波裁員,我決定主動拿賠償走人。后續(xù)的面試過程我做了一些準(zhǔn)備,基本都能走...
閱讀 2381·2021-11-24 10:31
閱讀 3433·2021-11-23 09:51
閱讀 2243·2021-11-15 18:11
閱讀 2394·2021-09-02 15:15
閱讀 2456·2019-08-29 17:02
閱讀 2292·2019-08-29 15:04
閱讀 835·2019-08-29 12:27
閱讀 2861·2019-08-28 18:15