我們來看一段代碼,下面的代碼一目了然
class A{
static int i=0;
static {
System.out.println("靜態代碼塊A");
}
public A(){
System.out.println("構造方法A");
}
{
System.out.println("代碼塊A");
}
static {
i++;
System.out.println("在類A中靜態變量i="+i);
}
}
public class B extends A{
static {
System.out.println("靜態代碼塊B");
}
public B(){
System.out.println("構造方法B");
}
{
System.out.println("代碼塊B");
}
public static void main(String[] args) {
System.out.println("main方法");
new B();
System.out.println("--------------------");
new B();
}
static {
i++;
System.out.println("在類B中靜態變量i="+i);
}
}
執行結果

我們可以得出以下結論
- 靜態變量是全局變量
- 靜態方法在類加載時被執行,只會被執行一次
- 靜態變量和靜態方法按照聲明的順序依次執行
- 父類的靜態方法>子類的靜態方法>Main函數>父類的代碼塊>父類的構造方法>子類的代碼塊>子類的構造方法
