執行順序:(優先級從高到低。)靜態代碼塊>mian方法>構造代碼塊>構造方法。
其中靜態代碼塊只執行一次。構造代碼塊在每次創建對象是都會執行。
static塊,普通代碼塊,構造代碼塊執行順序
class A{
public A(){
System.out.println("Hello A");
}
{
System.out.println("block A");
}
static{
System.out.println("static A");
}
}
public class B extends A{
public B(){
System.out.println("Hello B");
}
{
System.out.println("Block B");
}
static{
System.out.println("static B");
}
public static void main(String[] args) {
B d = new B();
}
}
輸出:
static A
static B
block A
Hello A
Block B
Hello B
思考一下:靜態代碼塊> 普通代碼塊 > 構造代碼塊
示例2:
package zqd.demo;
class A{
static{
System.out.println("1");
}
public A(){
System.out.println("2");
}
{
System.out.println("3");
}
}
class B extends A{
{
System.out.println("c");
}
static{
System.out.println("a");
}
public B(){
System.out.println("b");
}
}
public class Hello{
public static void main(String[] args){
A ab = new B();
ab = new B();
}
}
輸出:
1
a
3
2
c
b
3
2
c
b
