静态代码块在类第一次使用的时候执行一次,在构造函数执行之前执行。只要用到类,哪怕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.结果