Java——程式碼塊
阿新 • • 發佈:2018-11-10
所謂程式碼塊就是用大括號({})將多行程式碼封裝在一起,形成一個獨立的資料體,用於實現特定的演算法。一般來說程式碼塊是不能單獨執行的,它必須要有執行主體。
在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);
}
}
執行結果:
靜態程式碼塊
構造程式碼塊
無參構造器
構造程式碼塊
有參構造器