java編程思想之初始化與清理

引用書本的一句話:隨着計算機革命的發展,“不安全“的編程方式已逐漸成爲編程代價高昂的代價之一。所以嘛,我們在編程的時候,應該更加重視代碼的安全性,別黑客一個sql刪除真個數據庫也不是不可能發生的,那是跳樓可能都來不及咯!哭言歸正傳:今天的主題是初始化和清理。

我們可能見過很多的類中都有一個init()方法,也就說所謂的初始化方法,用於類加載時的數據初始化用的。那麼我們創建類的時候,java又是如何給我們自動初始化的呢?

其實我們在創建類的時候,java就給這個類創建了一個默認的構造函數,使得我們可能直接new出該類的對象。那構造函數是什麼樣的呢?第一構造函數是沒有返回值的,第二構造函數的名稱和類的名稱一樣哦!疑問不要驚訝,事實就是如此啊。第三除了默認的構造函數外,我們還可以自己創建帶參的構造函數呢!

需要注意的是當創建類帶參數的構造函數時,默認的構造函數就會失效,既不能new ClassName() . ClassName表示類的名稱,如需要調用默認構造函數則需要增加一個新的無參的構造函數方可哦!看你有人就會覺得奇怪咯!驚訝爲啥有兩個名字相同的方法呢?這就要說到類的一個重要的特性了:方法重載

何爲方法重載?方法重載是指在一個類中,兩個或多個方法具有相同的名稱而具有不同的參數。可以通過參數的不同類型和不同個數來實現方法的重載。這個時候,可能有人就有疑惑了,可不可以通過返回值來區分呢?首先對這些好問的朋友給予掌聲,問的好!大笑答案是否定的,一起來看下面的例子就明白啦。

void f(){}

int f () {return 1;}

此時調用f(),這樣的話,在強悍的java也是一臉懵逼啊,哥們,不帶這麼整滴罵人,因爲根本不能理解到底是調用哪個方法嘛!

下面來說一說this關鍵字的使用吧,this關鍵字只在方法內部使用,表示對“調用該方法對象”的引用。如果是調用類內部其他方法就沒必要使用this了,可以直接調用。

清理:終結清理和垃圾回收

java允許在類中定義一個名爲finalize()的方法,它的工作原理“假定”是這樣的:一旦垃圾回收器準備好釋放對象佔用的存儲空間,將首先調用finalize()方法,並且在下一次垃圾回收時,才真正回收對象佔用的內存。

java垃圾回收的注意點:1 對象可能不被垃圾回收 。 2  垃圾回收不等於“析構” 。3  垃圾回收只與內存有關

垃圾回收的方法介紹:這裏只介紹“標記-清理”算法和根搜索算法。

“標記-清理”是從堆棧和靜態區出發,遍歷所有的引用,進而找出活的對象,並進行標記,這個過程不回收對象,只有當所有對象標記完纔會進行清理。如果清理後的空間不是連續的,就得重新整理剩下的對象。

根搜索算法:採用鏈方法來判斷對象是否可用,如果對象到GC Roots之間有鏈可到達,則表示該對象是活的,沒有則表示該對象可被回收。

對於方法的局部變量,java以編譯時錯誤的形式來貫徹這種保證。

                          敬請期待下一期內容java編程思想之複用類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章