學習筆記:java初始化順序

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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()就可以(需要了解重載)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航