各種代碼塊的作用和區別


原文鏈接:https://blog.csdn.net/qq_41679818/article/details/93188324

代碼塊概述
在Java中,使用{}大括號括起來的代碼被稱為代碼塊。

根據其位置和聲明的不同,代碼塊可以分為:

局部代碼塊(普通代碼塊):控制變量的生命周期,提高內存利用率
構造代碼塊:可以給所有對象進行初始化
靜態代碼塊:對靜態屬性、類進行初始化,並且只執行一次。
同步代碼塊(多線程講解)。


構造代碼塊

在類中直接定義沒有任何修飾符、前綴、后綴的代碼塊即為構造代碼塊。

特點:

       new一個對象的時候總是先執行構造代碼,再執行構造函數。 

       有一點需要注意構造代碼不是在構造函數之前運行的,它是依托構造函數執行的。

       正是由於構造代碼塊有這幾個特性,所以它常用於如下場景:

 作用:

         可以給所有對象進行初始化

代碼示例:

public class demo1 {
    public static void main(String[] args) {
        Test test = new Test(3);  //構造代碼塊會在構造函數被調用時執行, 且在這個例子中比"this.id=id;"語句先執行,作用是給對象統一初始化數據;
        System.out.println(test);
    }
}
class Test{
    int id;
    String name;
    {
        this.id= 5;
        this.name = "測試";
        System.out.println("這是構造代碼塊");
    }
    public Test(int id)
    {
        this.id = id;
    }
 
    public String toString()
    {
        return "name: "+this.name +"  ,   "+"id: "+ this.id ;
    }

運行結果:

 

 

靜態代碼塊

靜態代碼塊就是用static修飾的用{}括起來的代碼段

特點:

它是隨着類的加載而執行,只執行一次,優先於構造函數
靜態代碼塊其實就是給類初始化的,而構造代碼塊是給對象初始化的。
一個類中可以有多個靜態代碼塊
作用:

         對靜態屬性進行初始化

注意:

          1.靜態代碼塊不能存在於任何方法體內。

          2 .靜態代碼塊不能直接訪問靜態實例變量和實例方法,需要通過類的實例對象來訪問。

代碼示例:

public class demo01 {
    public static void main(String[] args) {
 
        Test t=new Test();
    }
}
class Test{
    {
        System.out.println("構造代碼塊");
    }
    public Test(){
        System.out.println("我是構造方法");
    }
    static {
        System.out.println("我是靜態代碼塊");
    }
}

運行結果:

 

 

局部代碼塊

 位置在方法內部

作用:

         用於限定變量的生命周期,及早釋放變量,提高內存利用率。

public void show(){
       {
         System.out.println("局部代碼塊運行!");
       }
}

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM