Java簡明解讀代碼塊的應(yīng)用
什么是代碼塊
java中被 {} 括起來的代碼這部分被稱為代碼塊
代碼塊的分類
普通代碼塊(本地代碼塊)
構(gòu)造塊(實例代碼塊)
靜態(tài)塊
同步代碼塊
本片文章就先講普通代碼塊,構(gòu)造快和靜態(tài)塊。而同步代碼塊一般在多線程種用到,后面寫到多線程的時候會說同步代碼塊,在這就不多說了。代碼塊還是很簡答的,但是有一些要注意的點希望大家記住,接下來我會通過普通代碼塊,構(gòu)造快和靜態(tài)塊一起對比來講解。
普通代碼塊
普通代碼塊就是用{}括起來的代碼,這部分就是普通代碼塊,也稱本地代碼塊。舉個例子,看下面這段代碼:
public class Test { public static void main(String[] args) { { System.out.println("這是普通代碼塊"); } } }
主函數(shù)中,輸出 “這是普通代碼塊”這個部分是被{}括起來的部分,并且它的前面沒有任何限制條件,這部分就是 普通代碼塊。當然這種代碼塊沒什么太大的意義,因為沒有限制條件,加不加{}它都會執(zhí)行,所以平時不加{}也可以。
構(gòu)造塊(實例代碼塊)
實例代碼塊一般定義在類的內(nèi)部,方法的外部??聪旅孢@段代碼:
class blocks{ public int a; { this.a = 1; System.out.println("這是實例代碼塊"); } public class Test { public static void main(String[] args) { } }
而實例代碼塊和普通代碼塊非常像,只是位置不同而已,還有一點,實例代碼塊可以為普通的成員變量進行賦值。
靜態(tài)代碼塊
靜態(tài)成員變量也就是被static修飾的變量的初始化分為兩種:就地初始化 和 靜態(tài)代碼塊初始化。
就地初始化就是在創(chuàng)建變量的時候就給它進行了賦值。接下來我們來看一下靜態(tài)代碼塊初始化,
先來了解一下什么是靜態(tài)代碼塊,看一下下面的代碼:
class blocks{ static int a ; static { a = 1;//對靜態(tài)的成員變量進行賦值 System.out.println("這是靜態(tài)代碼塊"); } } public class Test { public static void main(String[] args) { } }
靜態(tài)代碼塊就是在普通代碼塊的前面加了一個static,這就是靜態(tài)代碼塊。而我可以在靜態(tài)代碼塊里面對靜態(tài)成員變量進行賦值,靜態(tài)代碼塊只能為靜態(tài)的成員變量進行賦值。
代碼塊的一些特性
靜態(tài)代碼塊不管生成多少個對象,其只會執(zhí)行一次
如果有多個靜態(tài)或?qū)嵗a塊,看定義的順序
如果沒有實例化對象,只會執(zhí)行靜態(tài)的
靜態(tài)成員變量是類的屬性,因此是在JVM加載類時開辟空間并初始化的
如果一個類中包含多個靜態(tài)代碼塊,在編譯代碼時,編譯器會按照定義的先后次序依次合并
實例代碼塊只有在創(chuàng)建對象時才會執(zhí)行
在這給大家講解一下代碼塊的特性,看一下下面這段代碼:
class Blocks { public int a; static int b; public double c; public Blocks(){ System.out.println("這是一個不帶參數(shù)的構(gòu)造方法"); } { this.a = 1; System.out.println("這是實例代碼塊"); } static { b = 1; System.out.println("這是靜態(tài)代碼塊"); } } public class Test { public static void main(String[] args) { Blocks blocks = new Blocks(); } }
我們都知道我們在主函數(shù)中創(chuàng)建對象的時候,編譯器會調(diào)用構(gòu)造方法,也就是public Blocks這個函數(shù)會被執(zhí)行。那么這段代碼的運行結(jié)果是什么?是只執(zhí)行構(gòu)造方法?還 是從上到下順序執(zhí)行?
答案是**靜態(tài)代碼塊先執(zhí)行,然后是實例代碼塊,最后是構(gòu)造方法。**運行結(jié)果如圖所示:
不只是這樣,靜態(tài)代碼塊在整個程序中,運行且只運行一次??聪旅孢@張圖:
這里我在上面代碼的基礎(chǔ)上又創(chuàng)建了一個對象,除了靜態(tài)代碼塊,其它都是執(zhí)行了兩次。剩下的還有一些結(jié)論,大家記一下就可以了。
到此這篇關(guān)于Java簡明解讀代碼塊的應(yīng)用的文章就介紹到這了,更多相關(guān)Java代碼塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
intellij idea設(shè)置統(tǒng)一JavaDoc模板的方法詳解
這篇文章主要介紹了intellij idea設(shè)置統(tǒng)一JavaDoc模板的方法詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04Java爬蟲實現(xiàn)爬取京東上的手機搜索頁面 HttpCliient+Jsoup
下面小編就為大家分享一篇Java爬蟲實現(xiàn)爬取京東上的手機搜索頁面 HttpCliient+Jsoup,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-11-11java讀取html文件,并獲取body中所有的標簽及內(nèi)容的案例
這篇文章主要介紹了java讀取html文件,并獲取body中所有的標簽及內(nèi)容的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08