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