1. 程式人生 > >Java之旅 (6) 初始化和清理

Java之旅 (6) 初始化和清理

用建構函式保證初始化,JAVA的物件建立和初始化是同一個概念,你不能要這個而不要那個。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

方法的過載區分經過載的方法:唯一的引數型別的列表

建構函式:如果沒有建構函式,編譯器會幫你建立一個無參型別的建構函式,但是如果你構造了一個,那麼

不管你構造的是個啥樣的,編譯器都不會再幫你構造了。

this的用法:this只應用於那些,你明確指明要使用當前物件的reference的特殊情況。舉例來說,他常用於

return語句以返回當前物件的reference.

/////////////////////////////////////

publicclass TestThis

{

int i = 0;

TestThis increment()

{

i++;

return this;

}

void print()

{

System.out.println("i="+i);

}

public static void main(String[] args)

{

TestThis x = new TestThis();

x.increment.increment.increment.print();//i==3

}

}

/////////////////////////////////////////

編譯器不會讓你在方法裡呼叫建構函式,但可以在建構函式裡呼叫建構函式。這個時候可以使用this

來進行這種呼叫。

引數的名字和類的資料成員的名字相同(有時候是刻意如此),可以利用this.x來表示他是

資料成員,而非引數。

static 的用法:是不是真正的“OOP”,留給理論家吧。

垃圾回收和finalize()都是靠不住的。而且用他們的地方和時機都是個問題。不要太在意。有一點要知道

System.gc()可以強制的執行finalize();

成員的初始化:基本資料型別,如果是在方法內部定義的區域性變數,則不初始化會出錯,而如果是類的資料

成員,則不初始化,編譯器會自動負初值。

下面是對基本建立物件做的一個總結,就用dog為例吧:

1,第一次建立dog類的物件(建構函式實際上是個static方法),或者第一次訪問

Dog類的static的方法或

欄位的時候,java直譯器會要搜尋classpath,找到Dog.class

2,裝載了Dog.class後,會對所有的static資料進行初始化。這樣第一個裝載class物件的時候,會先進行

static成員的初始化。

3,用new()建立新物件時,Dog物件的建立程序會先在堆裡為物件分配足夠的記憶體。

4,這快記憶體先被清零,這樣就自動的把Dog物件的primitive型別的成員賦上預設的值(對於數字就是零,或者相應的booleanchar),將reference設為null

5,執行定義成員資料時所作的初始化。

6,執行建構函式。

ok,今天到這裡,明天將學習到的是“隱藏實現”和“複用類”