构造块:
{
//语句
}
静态块:
static{
//语句
}
静态块在类加载的时候执行,且只执行一遍。静态变量也在类加载的时候初始化:
public class Test{
static int a=1;
static{
System.out.print(a);
System.out.print("2");
}
public static void main(String[] args) {
Test test=null;
}
}
输出:12
构造块在类初始化的时候执行
public class Test{
int b=4;
{
System.out.print("3");
System.out.print(b);
}
public static void main(String[] args) {
Test test=new Test();
}
}
输出:34
执行顺序:静态块--->构造快--->构造函数
public class Test{
int b=4;
static int a=1;
{
System.out.println("3");
System.out.println(b);
}
static{
System.out.println(a);
System.out.println("2");
}
public One(){
System.out.println("5");
}
public static void main(String[] args) {
Test test=new Test();
}
}
输出:12345