一、構造方法
在上一篇部落格《java面向對象之對象和類》中用到了box box = new box();語句來建立一個對象,new可以了解成建立一個對象的關鍵字,通過new關鍵字為對象配置設定記憶體,初始化執行個體變量,并調用構造方法。box()在形式上和調用方法的形式相同,這個box()就是一個特殊的方法叫構造方法。但是我們在代碼中并沒有看到這個方法的定義,是因為在沒有定義構造方法的時候,java會隐式的建立一個無參的預設構造方法,構造方法有以下特征:
具有和類相同的名稱。
不含有傳回值
不能在方法中使用return傳回一個值。
在一個類中具有上述特征的方法就是構造方法。構造方法在程式設計中是非常重要的,它可以為類的成員變量進行初始化工作,當一個類的執行個體對象剛産生時,這個類的構造方法就會被自動調用,可以在這個方法中完成對象的初始化工作。
需要注意的是,在構造方法裡不含傳回值的概念不同于void,依然以box類為例,public box(){}是構造方法,如果寫成public void box(){};就不是構造方法了。這是初學者經常犯的錯誤。
構造方法分為兩類,一類是當程式沒有定義構造方法時,系統自己生成的預設的構造方法,這個預設的構造方法沒有參數,方法體中也沒有任何代碼,即什麼也不做,但是會對類成員變量進行預設的初始化。預設初始化值見下表:
成員變量類型
初始值
byte、short、int、long
float
0.0f
double
0.0d
char
'\u0000'
boolean
false
all reference type
null
另一類是程式自己定義的構造方法,可以根據自己的要求對類成員變量進行初始化,也叫做參數化構造方法。注意:一旦程式自己定義了構造方法,系統就不會建立預設的構造方法了。
二、this關鍵字
this表示目前對象,如果說一個類中的成員方法可以直接調用同類中的其他成員,這時就可以使用this關鍵字來指定目前類,比如我們可以在box類中增加一個構造方法并使用this關鍵字為成員變量指派。
this關鍵字的用法總結如下:
通路目前對象的資料成員。
通路目前對象的成員方法。
當有方法重載的構造方法時,用來引用同一個類的其他構造方法。
三、對象的生命周期
類定義之後,隻是産生了對事物的描述,并沒有生成事物的執行個體。是以必須對類進行執行個體化,來生成客觀事物的記憶體映像,這就是對象的建立。對象建立之後必定要顯示它的一些特征和表現一些行為,這就是對象的使用。當對象不再使用時(沒有任何引用變量指向它時),對象就變成了垃圾,這就是對象的消亡。
1、垃圾回收
當程式的某個部件完成使命後,程式員往往棄之不顧,這是很危險的,這些垃圾會占用系統資源,造成記憶體洩漏等,是以清理垃圾是必要的。java提供了一套垃圾回收機制來避免程式員忽略垃圾的處理,自動幫我們完成垃圾的清理工作。但是,垃圾回收器的啟用不由程式員控制,也無規律可循,并不會一産生垃圾,他就會被喚起,甚至可能到程式終止,它都沒有啟動的機會。在程式設計過程中,我們還是要養成良好的程式設計規範,避免不必要的麻煩。
2、system.gc作用
因為java垃圾回收的偶然性,如果在一個對象成為垃圾時需要馬上釋放,或者程式在某時間内産生大量垃圾時,希望人工幹預垃圾回收,這時候我們可以使用system.gc();來強制啟動垃圾回收器回收垃圾。