首頁  >  文章  >  Java  >  深入淺析Java中普通程式碼區塊、建構程式碼區塊與靜態程式碼區塊

深入淺析Java中普通程式碼區塊、建構程式碼區塊與靜態程式碼區塊

高洛峰
高洛峰原創
2017-01-18 15:03:561332瀏覽

//執行順序:(優先權從高到低。)

靜態程式碼區塊>mian方法>建構程式碼區塊>建構方法。

其中靜態程式碼區塊只執行一次。構造程式碼區塊在每次創建物件是都會執行。

1.普通程式碼區塊

public static void main(String[] args) {
/*普通代码块:
*直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。
*普通代码块执行顺序由他们在代码中出现的次序决定--“先出现先执行”
* */
{
  System.out.println("这里是普通代码块A");
}
//new A();
{
  System.out.println("这里是普通代码块B");
}
}

執行結果:這裡是普通程式碼區塊A
     這裡是普通程式碼區塊B

2.靜態程式碼區塊與建構程式碼關鍵字聲明的程式碼區塊。

常用於對類別的初始化,每個靜態程式碼區塊只會執行一次(類別在記憶體中載入時執行,類別在記憶體中載入後類別已經存在)由於JVM在載入類別時會執行靜態程式碼區塊,所以靜態程式碼區塊先於主方法執行。如果類別中包含多個靜態程式碼區塊,那麼將依照"先定義的程式碼先執行,後定義的程式碼後執行。

ps:

1 靜態程式碼區塊不能存在於任何方法體內。

2 靜態程式碼

2 靜態程式碼區塊不能存在於任何方法體內。

2 靜態程式碼

2 靜態程式碼區塊不能存在於任何方法體內。

區塊不能直接存取靜態實例變數和實例方法,需要透過類別的實例物件來存取。程式碼區塊在建立物件時被調用,每次建立物件都會被調用,並且建構程式碼區塊的執行次序優先於類別建構函式。

這裡是普通程式碼區塊A

這裡是普通程式碼區塊//類別中的物件被建立時執行,每創建一次執行一次,在加一句new structure(); 執行結果為: 


這裡是普通程式碼區塊B


3.概要總結

public class structure {
{
System.out.println("这里是普通代码块");//所有类中有一个默认的构造函数,这里的代码块为构造代码块,在类中的对象被创建时执行
}
public static void main(String[] args) {
/*普通代码块:
*直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。
*普通代码块执行顺序由他们在代码中出现的次序决定--“先出现先执行”
* */
{
System.out.println("这里是普通代码块A");
}
new structure();//第二次类加载时静态代码块不执行
//new A();
{
System.out.println("这里是普通代码块B");
}
}
static{
System.out.println("这里是静态代码块");
}
}

執行結果:

這裡是靜態程式碼區塊

這裡是普通程式碼區塊A

這裡是A中的普靜態程式碼區塊1

區塊1

這裡是A中的普通程式碼區塊2
這裡是普通程式碼區塊B

優先權總結:靜態程式碼區塊2

更多深入淺析Java中普通程式碼區塊、建構程式碼區塊與靜態程式碼區塊相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn