1. 程式人生 > >Java——程式碼塊

Java——程式碼塊

所謂程式碼塊就是用大括號({})將多行程式碼封裝在一起,形成一個獨立的資料體,用於實現特定的演算法。一般來說程式碼塊是不能單獨執行的,它必須要有執行主體。

在Java中程式碼塊主要分為四種:

  • 普通程式碼塊
  • 構造程式碼塊
  • 靜態程式碼塊
  • 同步程式碼塊:

1.  普通程式碼塊

普通程式碼塊就是在方法名後面用  {}  括起來的程式碼段。普通程式碼塊是不能夠單獨存在的,它必須要緊跟在方法名後面。同時也必須要使用方法名呼叫它。

public class Test{
    public void test(){
        System.out.println("普通程式碼塊");
    }
}

 

2.  靜態程式碼塊

靜態程式碼塊就是用  static  修飾的用  { }  括起來的程式碼段,它的主要目的就是對靜態屬性進行初始化。只會執行一次。

public class Test{
    static {
        System.out.println("靜態程式碼塊");
    }
}

3.  構造程式碼塊

在類中直接定義沒有任何修飾符、字首、字尾的程式碼塊即為構造程式碼塊。一個類必須至少有一個建構函式,建構函式在生成物件時被呼叫。構造程式碼塊和建構函式一樣同樣是在生成一個物件時被呼叫。

public class Test{
   {
        System.out.println("構造程式碼塊");
    }
}

4.  同步程式碼塊

使用 synchronized 關鍵字修飾,並使用 “{ }” 括起來的程式碼片段,它表示同一時間只能有一個執行緒進入到該方法塊中,是一種多執行緒保護機制。

 

5.  靜態程式碼塊、構造程式碼塊、建構函式執行順序

靜態程式碼塊,靜態,其作用級別為類,構造程式碼塊、建構函式,構造,其作用級別為物件。

      1、 靜態程式碼塊,它是隨著類的載入而被執行,只要類被載入了就會執行,而且只會載入一次,主要用於給類進行初始化。

      2、 構造程式碼塊,每建立一個物件時就會執行一次,且優先於建構函式,主要用於初始化不同物件共性的初始化內容和初始化例項環境。

      3、 建構函式,每建立一個物件時就會執行一次。同時建構函式是給特定物件進行初始化,而構造程式碼是給所有物件進行初始化,作用區域不同。

      通過上面的分析,他們三者的執行順序應該為:靜態程式碼塊 > 構造程式碼塊 > 建構函式。

package com.zth;

public class Test{
    static {
        System.out.println("靜態程式碼塊");
    }
    {
        System.out.println("構造程式碼塊");
    }
    public Test(){
        System.out.println("無參構造器");
    }
    public Test(int i){
        System.out.println("有參構造器");
    }
    public static void main(String[] args){
        new Test();
        new Test(1);
    }

}

執行結果:

靜態程式碼塊
構造程式碼塊
無參構造器
構造程式碼塊
有參構造器