欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

什么是代碼塊

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)文章

  • 較詳細的JNI簡介

    較詳細的JNI簡介

    JNI是本地語言編程接口。它允許運行在JVM中的Java代碼和用C、C++或匯編寫的本地代碼相互操作。下面通過本文給大家分享JNI簡介,感興趣的朋友一起看看吧
    2017-10-10
  • SpringBoot項目微信云托管入門部署實踐

    SpringBoot項目微信云托管入門部署實踐

    本文主要介紹了SpringBoot項目微信云托管入門部署實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • java中instanceof與Class的等價性代碼示例

    java中instanceof與Class的等價性代碼示例

    這篇文章主要介紹了java中instanceof與Class的等價性代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • java由JABXContext注解讀取xml配置文件方式

    java由JABXContext注解讀取xml配置文件方式

    這篇文章主要介紹了java由JABXContext注解讀取xml配置文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java doGet, doPost方法和文件上傳實例代碼

    Java doGet, doPost方法和文件上傳實例代碼

    這篇文章主要介紹了Java doGet, doPost方法和文件上傳實例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • intellij idea設(shè)置統(tǒng)一JavaDoc模板的方法詳解

    intellij idea設(shè)置統(tǒng)一JavaDoc模板的方法詳解

    這篇文章主要介紹了intellij idea設(shè)置統(tǒng)一JavaDoc模板的方法詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Java中Spring的單例模式使用

    Java中Spring的單例模式使用

    這篇文章主要介紹了Java中Spring的單例模式使用,spring中的單例也不影響應(yīng)用并發(fā)訪問。大多數(shù)時候客戶端都在訪問我們應(yīng)用中的業(yè)務(wù)對象,為減少并發(fā)控制,不應(yīng)該在業(yè)務(wù)對象中設(shè)置那些容易造成出錯的成員變量,下面一起進入文章了解更多詳細內(nèi)容吧
    2022-01-01
  • Java爬蟲實現(xiàn)爬取京東上的手機搜索頁面 HttpCliient+Jsoup

    Java爬蟲實現(xiàn)爬取京東上的手機搜索頁面 HttpCliient+Jsoup

    下面小編就為大家分享一篇Java爬蟲實現(xiàn)爬取京東上的手機搜索頁面 HttpCliient+Jsoup,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • java讀取html文件,并獲取body中所有的標簽及內(nèi)容的案例

    java讀取html文件,并獲取body中所有的標簽及內(nèi)容的案例

    這篇文章主要介紹了java讀取html文件,并獲取body中所有的標簽及內(nèi)容的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java計算數(shù)學(xué)表達式代碼詳解

    Java計算數(shù)學(xué)表達式代碼詳解

    這篇文章主要介紹了Java計算數(shù)學(xué)表達式代碼詳解,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12

最新評論