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

Java淺析代碼塊與構(gòu)造塊及靜態(tài)塊三者之間的關(guān)系

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

普通代碼塊(本地代碼塊)

定義在方法里面用{ }括起來的代碼塊(凡是用{ }括起來都叫代碼塊,只是沒有細分),就是普通代碼塊,也叫本地代碼塊。(不多見,也不常用)

例如:

public class Test {
    public static void main(String[] args){
        {
            System.out.println("本地代碼塊!");    
        }
    }
}

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

實例代碼塊定義在類的內(nèi)部,方法的外部,可以初始化實例的成員

例如:

class Student{
    //成員變量
    public String name;
    public int score;
    //類變量
    public static String classes = "火箭6班";
    //類方法
    public static void fun1(){
        Student stu = new Student();
        stu.name = "jay";           //正確
        System.out.println("類方法");
    }
    //成員方法
    public void fun2(String name, int score){
        this.name = name;
        this.score = score;
    }
    //實例代碼塊
    {
        this.name = "jay";
        System.out.println("實例代碼塊!");
    }
}

靜態(tài)塊(靜態(tài)代碼塊)

靜態(tài)代碼塊定義在類的內(nèi)部,方法的外部,可以初始化實例的成員

例如:

class Student{
    //成員變量
    public String name;
    public int score;
    //類變量
    public static String classes = "火箭6班";
    //類方法
    public static void fun1(){
        Student stu = new Student();
        stu.name = "jay";           //正確
        System.out.println("類方法");
    }
    //成員方法
    public void fun2(String name, int score){
        this.name = name;
        this.score = score;
    }
    //實例代碼塊
    {
        System.out.println("實例代碼塊!");
    }
    //靜態(tài)代碼塊
    static{
        classes = "16班";
        System.out.println("靜態(tài)代碼塊!");
    }

他們之間有什么關(guān)系呢

例子

情況一:看如下代碼會執(zhí)行什么?

class Student{
    //成員變量
    public String name;
    public int score;
    //構(gòu)造方法
    public Student(){
        System.out.println("構(gòu)造方法!");
    }
    //類變量
    public static String classes = "火箭6班";
    //類方法
    public static void fun1(){
        Student stu = new Student();
        stu.name = "jay";           //正確
        System.out.println("類方法");
    }
    //成員方法
    public void fun2(String name, int score){
        this.name = name;
        this.score = score;
    }
    //實例代碼塊
    {
        System.out.println("實例代碼塊!");
    }
    //靜態(tài)代碼塊
    static{
        System.out.println("靜態(tài)代碼塊!");
    }
}
public class Test {
    public static void main(String[] args){
        Student stu = new Student();
    }
}

情況一運行結(jié)果:

情況二:看如下代碼會執(zhí)行什么?

class Student{
    //成員變量
    public String name;
    public int score;
    //構(gòu)造方法
    public Student(){
        System.out.println("構(gòu)造方法!");
    }
    //類變量
    public static String classes = "火箭6班";
    //類方法
    public static void fun1(){
        Student stu = new Student();
        stu.name = "jay";           //正確
        System.out.println("類方法");
    }
    //成員方法
    public void fun2(String name, int score){
        this.name = name;
        this.score = score;
    }
    //實例代碼塊
    {
        System.out.println("實例代碼塊!");
    }
    //靜態(tài)代碼塊
    static{
        System.out.println("靜態(tài)代碼塊!");
    }
}
public class Test {
    public static void main(String[] args){
        System.out.println(Student.classes);
    }
}

情況二運行結(jié)果:

分析

  • 他們執(zhí)行的順序是:靜態(tài)代碼塊 -> 實例代碼塊 -> 構(gòu)造方法(不論代碼塊的位置在哪,都是這個順序!若有多個靜態(tài),看定義順序即可)
  • 只要加載了類,靜態(tài)代碼塊就會被執(zhí)行
  • 若沒有實例化對象只會執(zhí)行靜態(tài)的
  • 若有多個實例,須看定義順序
  • 如果沒有實例化對象,靜態(tài)代碼塊只會執(zhí)行一次

到此這篇關(guān)于Java淺析代碼塊與構(gòu)造塊及靜態(tài)塊三者之間的關(guān)系的文章就介紹到這了,更多相關(guān)Java 代碼塊 構(gòu)造塊 靜態(tài)塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?NIO與IO的區(qū)別以及比較

    Java?NIO與IO的區(qū)別以及比較

    這篇文章主要介紹了Java?NIO與IO的區(qū)別以及比較,文章通過圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • spring mvc4的日期/數(shù)字格式化、枚舉轉(zhuǎn)換示例

    spring mvc4的日期/數(shù)字格式化、枚舉轉(zhuǎn)換示例

    本篇文章主要介紹了spring mvc4的日期/數(shù)字格式化、枚舉轉(zhuǎn)換示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • Integer IntegerCache源碼閱讀

    Integer IntegerCache源碼閱讀

    這篇文章主要介紹了Integer IntegerCache源碼閱讀,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • springboot如何引入外部yml配置文件

    springboot如何引入外部yml配置文件

    這篇文章主要介紹了springboot如何引入外部yml配置文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java使用JNA調(diào)用DLL文件

    Java使用JNA調(diào)用DLL文件

    JNA(Java?Native?Access)是一個在?Java?中調(diào)用本地代碼的開源框架,提供了一種簡單、高效的方式來訪問本地動態(tài)鏈接庫,下面我們來看看Java如何使用JNA調(diào)用DLL文件吧
    2024-12-12
  • java使用mybatis調(diào)用存儲過程返回一個游標結(jié)果集方式

    java使用mybatis調(diào)用存儲過程返回一個游標結(jié)果集方式

    這篇文章主要介紹了java使用mybatis調(diào)用存儲過程返回一個游標結(jié)果集方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • SpringBoot中全局異常處理的5種實現(xiàn)方式小結(jié)

    SpringBoot中全局異常處理的5種實現(xiàn)方式小結(jié)

    在實際開發(fā)中,異常處理是一個非常重要的環(huán)節(jié),合理的異常處理機制不僅能提高系統(tǒng)的健壯性,還能大大提升用戶體驗,下面我們就來看看SpringBoot中全局異常處理的5種實現(xiàn)方式吧
    2025-03-03
  • MyBatis ORM映射方式示例詳解

    MyBatis ORM映射方式示例詳解

    MyBatis作為一種靈活且強大的ORM框架,提供了多種映射方式,包括基于XML的映射、基于注解的映射以及混合映射,這篇文章主要介紹了MyBatis ORM映射方式詳解,需要的朋友可以參考下
    2024-12-12
  • 淺談Spring IoC容器的依賴注入原理

    淺談Spring IoC容器的依賴注入原理

    這篇文章主要介紹了淺談Spring IoC容器的依賴注入原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Java如何判斷一個字符串是否包含某個字符串

    Java如何判斷一個字符串是否包含某個字符串

    這篇文章主要給大家介紹了關(guān)于Java如何判斷一個字符串是否包含某個字符串的相關(guān)資料,在實際編程中,經(jīng)常需要判斷一個字符串中是否包含某個子串,需要的朋友可以參考下
    2023-07-07

最新評論

报价| 长汀县| 即墨市| 龙里县| 太和县| 岑巩县| 吴川市| 桃园市| 揭阳市| 蓬溪县| 漳平市| 义乌市| 通海县| 安福县| 图木舒克市| 溧阳市| 桐城市| 长葛市| 武汉市| 林甸县| 于田县| 青川县| 株洲县| 威海市| 保德县| 巴林左旗| 临沭县| 弥勒县| 修文县| 宁远县| 陈巴尔虎旗| 界首市| 赣州市| 灵台县| 内乡县| 阳春市| 普兰县| 灵石县| 慈溪市| 岗巴县| 峨边|