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

Java簡(jiǎn)明解讀代碼塊的應(yīng)用

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

什么是代碼塊

java中被 {} 括起來(lái)的代碼這部分被稱為代碼塊

代碼塊的分類

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

本片文章就先講普通代碼塊,構(gòu)造快和靜態(tài)塊。而同步代碼塊一般在多線程種用到,后面寫(xiě)到多線程的時(shí)候會(huì)說(shuō)同步代碼塊,在這就不多說(shuō)了。代碼塊還是很簡(jiǎn)答的,但是有一些要注意的點(diǎn)希望大家記住,接下來(lái)我會(huì)通過(guò)普通代碼塊,構(gòu)造快和靜態(tài)塊一起對(duì)比來(lái)講解。

普通代碼塊

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

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

主函數(shù)中,輸出 “這是普通代碼塊”這個(gè)部分是被{}括起來(lái)的部分,并且它的前面沒(méi)有任何限制條件,這部分就是 普通代碼塊。當(dāng)然這種代碼塊沒(méi)什么太大的意義,因?yàn)闆](méi)有限制條件,加不加{}它都會(huì)執(zhí)行,所以平時(shí)不加{}也可以。

構(gòu)造塊(實(shí)例代碼塊)

實(shí)例代碼塊一般定義在類的內(nèi)部,方法的外部??聪旅孢@段代碼:

class blocks{
    public int a;
    {
        this.a = 1;
        System.out.println("這是實(shí)例代碼塊");
    }
public class Test {
    public static void main(String[] args) {
    }
}

而實(shí)例代碼塊和普通代碼塊非常像,只是位置不同而已,還有一點(diǎn),實(shí)例代碼塊可以為普通的成員變量進(jìn)行賦值。

靜態(tài)代碼塊

靜態(tài)成員變量也就是被static修飾的變量的初始化分為兩種:就地初始化 和 靜態(tài)代碼塊初始化。

就地初始化就是在創(chuàng)建變量的時(shí)候就給它進(jìn)行了賦值。接下來(lái)我們來(lái)看一下靜態(tài)代碼塊初始化,

先來(lái)了解一下什么是靜態(tài)代碼塊,看一下下面的代碼:

class blocks{
    static int a ;
    static {
        a = 1;//對(duì)靜態(tài)的成員變量進(jìn)行賦值
        System.out.println("這是靜態(tài)代碼塊");
    }
}
public class Test {
    public static void main(String[] args) {
    }
}

靜態(tài)代碼塊就是在普通代碼塊的前面加了一個(gè)static,這就是靜態(tài)代碼塊。而我可以在靜態(tài)代碼塊里面對(duì)靜態(tài)成員變量進(jìn)行賦值,靜態(tài)代碼塊只能為靜態(tài)的成員變量進(jìn)行賦值。

代碼塊的一些特性

靜態(tài)代碼塊不管生成多少個(gè)對(duì)象,其只會(huì)執(zhí)行一次

如果有多個(gè)靜態(tài)或?qū)嵗a塊,看定義的順序

如果沒(méi)有實(shí)例化對(duì)象,只會(huì)執(zhí)行靜態(tài)的

靜態(tài)成員變量是類的屬性,因此是在JVM加載類時(shí)開(kāi)辟空間并初始化的

如果一個(gè)類中包含多個(gè)靜態(tài)代碼塊,在編譯代碼時(shí),編譯器會(huì)按照定義的先后次序依次合并

實(shí)例代碼塊只有在創(chuàng)建對(duì)象時(shí)才會(huì)執(zhí)行

在這給大家講解一下代碼塊的特性,看一下下面這段代碼:

class Blocks {
    public int a;
    static int b;
    public double c;
    public Blocks(){
        System.out.println("這是一個(gè)不帶參數(shù)的構(gòu)造方法");
    }
    {
        this.a = 1;
        System.out.println("這是實(shí)例代碼塊");
    }
    static {
        b = 1;
        System.out.println("這是靜態(tài)代碼塊");
    }
}
public class Test {
    public static void main(String[] args) {
        Blocks blocks = new Blocks();
    }
}

我們都知道我們?cè)谥骱瘮?shù)中創(chuàng)建對(duì)象的時(shí)候,編譯器會(huì)調(diào)用構(gòu)造方法,也就是public Blocks這個(gè)函數(shù)會(huì)被執(zhí)行。那么這段代碼的運(yùn)行結(jié)果是什么?是只執(zhí)行構(gòu)造方法?還 是從上到下順序執(zhí)行?

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

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

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

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

相關(guān)文章

最新評(píng)論

酒泉市| 武汉市| 满城县| 易门县| 金寨县| 阿勒泰市| 奉化市| 泌阳县| 鄂托克前旗| 枞阳县| 宜川县| 新龙县| 申扎县| 紫阳县| 西畴县| 岗巴县| 桐庐县| 抚远县| 陈巴尔虎旗| 洮南市| 武陟县| 湘阴县| 尤溪县| 清镇市| 元谋县| 八宿县| 舟曲县| 龙川县| 宁国市| 平陆县| 兴和县| 屯留县| 通化市| 内江市| 商丘市| 连江县| 洪泽县| 云南省| 巨野县| 张家口市| 鹿泉市|