最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java簡明解讀代碼塊的應用

 更新時間:2022年07月14日 09:26:57   作者:白朝槿kk  
所謂代碼塊是指用"{}"括起來的一段代碼,根據(jù)其位置和聲明的不同,可以分為普通代碼塊、構造塊、靜態(tài)塊、和同步代碼塊。如果在代碼塊前加上 synchronized關鍵字,則此代碼塊就成為同步代碼塊

什么是代碼塊

java中被 {} 括起來的代碼這部分被稱為代碼塊

代碼塊的分類

普通代碼塊(本地代碼塊)
構造塊(實例代碼塊)
靜態(tài)塊
同步代碼塊 

本片文章就先講普通代碼塊,構造快和靜態(tài)塊。而同步代碼塊一般在多線程種用到,后面寫到多線程的時候會說同步代碼塊,在這就不多說了。代碼塊還是很簡答的,但是有一些要注意的點希望大家記住,接下來我會通過普通代碼塊,構造快和靜態(tài)塊一起對比來講解。

普通代碼塊

普通代碼塊就是用{}括起來的代碼,這部分就是普通代碼塊,也稱本地代碼塊。舉個例子,看下面這段代碼:

public class Test {
    public static void main(String[] args) {
        {
            System.out.println("這是普通代碼塊");
        }
    }
}

主函數(shù)中,輸出 “這是普通代碼塊”這個部分是被{}括起來的部分,并且它的前面沒有任何限制條件,這部分就是 普通代碼塊。當然這種代碼塊沒什么太大的意義,因為沒有限制條件,加不加{}它都會執(zhí)行,所以平時不加{}也可以。

構造塊(實例代碼塊)

實例代碼塊一般定義在類的內部,方法的外部??聪旅孢@段代碼:

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)或實例代碼塊,看定義的順序

如果沒有實例化對象,只會執(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ù)的構造方法");
    }
    {
        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)建對象的時候,編譯器會調用構造方法,也就是public Blocks這個函數(shù)會被執(zhí)行。那么這段代碼的運行結果是什么?是只執(zhí)行構造方法?還 是從上到下順序執(zhí)行?

答案是**靜態(tài)代碼塊先執(zhí)行,然后是實例代碼塊,最后是構造方法。**運行結果如圖所示:

不只是這樣,靜態(tài)代碼塊在整個程序中,運行且只運行一次??聪旅孢@張圖:

這里我在上面代碼的基礎上又創(chuàng)建了一個對象,除了靜態(tài)代碼塊,其它都是執(zhí)行了兩次。剩下的還有一些結論,大家記一下就可以了。

到此這篇關于Java簡明解讀代碼塊的應用的文章就介紹到這了,更多相關Java代碼塊內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

宿迁市| 庐江县| 汉源县| 揭西县| 巴彦淖尔市| 名山县| 麻栗坡县| 内江市| 荥经县| 乐都县| 北海市| 调兵山市| 金寨县| 建始县| 阳信县| 安西县| 铜梁县| 民乐县| 威海市| 揭东县| 淳安县| 曲水县| 锦屏县| 四平市| 洛隆县| 长岛县| 辽宁省| 安西县| 龙陵县| 周宁县| 枣阳市| 娄底市| 东城区| 泊头市| 巴马| 奇台县| 方城县| 宣威市| 玉门市| 张家川| 宜州市|