java代碼執行順序

 1、java代碼執行順序(理解形式):一、父類靜 態代碼塊->子類靜態代碼塊(只執行一次);
                                                             二、父類成員變量的初始化或普通代碼塊->父類構造函數;
                                               三、子 類成員變量的初始化或普通代碼塊->子類構造函數。

         2、概念:               
         static 代碼塊也叫靜態代碼塊,是在類中獨立於類成員的 static 語句塊,能夠有多個,位置能夠隨便放,它不在任何的方法體內, JVM 加載類時會執行這些靜態的代碼塊,若是 static 代碼塊有多個, JVM 將按照它們在類中出現的前後順序依次執行它們,每一個代碼塊只會被執行一次。
         eg: static
{       
System.out.println("static block of demo!");
}

         普通代碼塊是指在類中直接用大括號{}括起來的代碼段。
          eg:
          {
System.out.println("comman block of demo!");
           }

3、代碼示例
public class Parent
{
 private Delegete delegete = new Delegete();
 
 static//加載時執行,只會執行一次
 {
System.out.println("static block of parent!");
 }

 
 public Parent(String name)
 {
System.out.println("to construct parent!");
 }
 
 {
System.out.println("comman block of parent!");
 }
}

class Child extends Parent
{
 static
 {
System.out.println("static block of child!");
 }
 
 static//能夠包含多個靜態塊,按照次序依次執行
 {
  System.out.println("second static block of child!");
 }
 
 //普通代碼塊與變量的初始化等同的,按照次序依次執行
 {
  System.out.println("comman mode of child!");
 }
 
 
 private Delegete delegete = new Delegete();
 
 {
  System.out.println("second comman mode of child!");
 }
 
 //構造順序,先執行靜態塊(父類、子類順序執行)
 //執行父類成員變量的初始化或普通代碼塊,而後執行構造函數
 //執行子類成員變量的初始化或普通代碼塊,而後執行構造函數
 public Child()
 {
  super("DLH");
  System.out.println("to construct child!");
 }
 
 public static void main (String[] args) {
  Child c = new Child();  
  System.out.println("**********************************");
  Child c2 = new Child();
 }
}

class Delegete
{
 static 
 {
  System.out.println("static of Delegete!");
 }
 public Delegete()
 {
  System.out.println("to construct delegete!");
 }
 
輸出結果:
 static block of parent!
 static block of child!
 second static block of child!
 static of Delegete!
 to construct delegete!
 comman block of parent!
 to construct parent!
 comman mode of child!
 to construct delegete!
 second comman mode of child!
 to construct child!
 **********************************
 to construct delegete!
 comman block of parent!
 to construct parent!
 comman mode of child!
 to construct delegete!
 second comman mode of child!
 to construct child!
相關文章
相關標籤/搜索