Java程式碼塊,Java執行時序
阿新 • • 發佈:2019-02-11
作者:雲都小生
概述
Java中的程式碼塊有四種,普通程式碼塊、構造程式碼塊、靜態程式碼塊,以及執行緒相關的同步程式碼塊。
這些程式碼塊都有自己特殊的用途。
普通程式碼塊
普通的程式碼塊定義在方法中,奉行的是“遇到就執行”的原則。它定義的方式如下↓
public class Test { public static void main(String[] args) { int x; { x = 2; System.out.println("執行了普通程式碼塊1"); } { x = 4; System.out.println("執行了普通程式碼塊2"); } System.out.println(x); } } //執行結果 //執行普通程式碼塊1 //執行普通程式碼塊2 //4
普通程式碼塊通常用來對欄位進行初始化。
構造程式碼塊
構造程式碼塊是定義在類內部、方法之外,沒有用static修飾,語法跟普通程式碼塊一樣。
public class CodeBlock { { System.out.println("構造程式碼塊"); } CodeBlock(){ System.out.println("構造方法"); } } public class Test { public static void main(String[] args) { CodeBlock codeBlock = new CodeBlock(); } } //執行結果 //構造程式碼塊 //構造方法
構造程式碼塊,一般用來對屬性進行初始化,它是在物件建立之後被呼叫,但是呼叫的優先順序比構造方法快。
靜態程式碼塊
靜態程式碼塊也是定義在類中,但不是定義在方法中,靜態程式碼塊比構造程式碼塊、構造方法更快被呼叫。在建立物件之前,如果準確的來說,JVM在載入類時就會執行靜態程式碼塊。
public class CodeBlock { { System.out.println("靜態程式碼塊"); } { System.out.println("構造程式碼塊"); } CodeBlock(){ System.out.println("構造方法"); } } public class Test { public static void main(String[] args) { CodeBlock codeBlock = new CodeBlock(); } } //執行結果 //靜態程式碼塊 //構造程式碼塊 //構造方法
靜態程式碼塊通常用來對靜態屬性進行初始化。
如果你在一個有main方法的類中,放一個靜態程式碼塊,靜態程式碼塊會優先於main方法執行。
public class Test
{
static
{
System.out.println("靜態程式碼塊");
}
{
System.out.println("構造程式碼塊");
}
Test(){
System.out.println("構造方法");
}
public static void main(String[] args) {
System.out.println("主方法");
CodeBlock codeBlock = new CodeBlock();
}
}
//靜態程式碼塊
//主方法
//靜態程式碼塊
//構造程式碼塊
//構造方法
2018/4/10 1:05:40 @Author:雲都小生