靜態代碼塊在類第一次使用的時候執行一次,在構造函數執行之前執行。只要用到類,哪怕new對象(比如只聲明變量)也會被執行,且只執行一次。一般用於對類進行初始化。
先執行靜態代碼塊,靜態成員(誰在前就先執行誰)。無論new幾次 靜態代碼塊和靜態成員只執行一次
再執行成員變量,最后構造函數。new幾次 成員變量和構造函數 執行幾次。
代碼:
1.聲明StaitcBlock類
public class StaticBlock1 { private static String TAG="333"; //成員變量 private int age1=setAge(); //構造函數 public StaticBlock1(){ Log.e(TAG, "構造函數"); } //靜態代碼塊 static{ Log.e(TAG, "靜態代碼塊 " ); } //靜態成員 private static int age2=setAge2(); public static void main(String[] args) { StaticBlock1 b1=new StaticBlock1(); StaticBlock1 b2=new StaticBlock1(); } private int setAge(){ Log.e(TAG, "getAge1: 方法1" ); return 3; } private static int setAge2(){ Log.e(TAG, "getAge2: 方法2" ); return 333; } }
2.在Activity中創建StaticBoloc類
Log.e(TAG, "onCreate: ------------------------開始" ); StaticBlock1 b1=new StaticBlock1(); Log.e(TAG, "----------------------------------------------------------------------------------" ); StaticBlock1 b2=new StaticBlock1();
3.結果

