class Bowl {     Bowl(int marker) {         System.out.println("Bowl(" + marker + ")");     }
      void f1() {         System.out.println("Ok");     } }
  class Cupboard {     Bowl b1 = new Bowl(1);
      static Bowl b2 = new Bowl(2);
      Cupboard() {         System.out.println("Cupboard()");     }
      static Bowl b3 = new Bowl(3); }
  class Table {     Table() {         System.out.println("Table()");     }     Table(String a,int i){         this();         System.out.println("Ok");         } }
  public class Order {     static Cupboard t1 = new Cupboard();
      static Table t2;
      Bowl t3 = new Bowl(10);
      void print() {         t3.f1();     }
      public static void main(String[] args) {         System.out.println("Creating new Cupboard() in main");         new Cupboard();         System.out.println("Creating new Cupboard() in main");         Order od = new Order();         od.t3.f1();         Table t4 = new Table("aa",1);     } } 
程序運行時:裝載Order.class,運行Order類中的static塊    static Cupboard t1 = new Cupboard(); 這構造了一個Cupboard對象,構造對象時,會裝載Cupboard類, 也是先執行static塊 static Bowl b2 = new Bowl(2);//創建一個Bowl對象,過程和Cupboard一樣,會調用構造函數 static Bowl b3 = new Bowl(3);//同上 然後執行  Bowl b1 = new Bowl(1);//創建一個Bowl對象 然後執行構造函數Bowl()
  接下來:     static Table t2;//這只是聲明,並沒有創建對象,不用理會 然後:     執行main函數中的語句      System.out.println("Creating new Cupboard() in main");         new Cupboard();  //注意的是,static只會初始化一次         System.out.println("Creating new Cupboard() in main");        Order od = new Order();//創建Order對象,同上      od.t3.f1();         Table t4 = new Table("aa",1);//創建了Table,注意這裡構造函數的調用this()就可以(需要了解重載)
   
 
  |