Java編程思想(第五章)

在編程中變量的初始化是一個很重要的問題,往往就是不記得對變量進行初始化二產生許多的安全問題。

        Java參考了c++的構造器(constructor)做法來確保對象的初始化,創建對象的時候,如果其類有構造器,Java就會在用戶有能力調用之前自動調用相應的構造器,從而保證了初始化的進行。構造器分爲有參構造器和無參構造器(一般也叫默認構造器),Java中一個類可以有一個或者多個構造器,如果本身沒有構造器在運行時虛擬機將自動添加一個默認的無參構造器,如果有了構造器(不管有參無參)虛擬機將不會再添加構造器。構造器的名稱與類名相同,構造器不能有返回值(包括void)。在擁有多個構造器是我們可以在構造器裏通過this關鍵字調用其他構造器,需要注意的是調用語句必須在構造器裏面的第一行,所有一個構造器只能調用另一個構造器,不能同時調1個以上的構造器。

        在Java中一個類的方法可以有多個重載,方法的重載通過參數列表的不同來標識,參數列表的位置不同也可以實現方法的重載,但是我們一般不建議這樣做,因爲這樣會讓後面的代碼維護變得更加困難。需要注意的是不能通過返回值的不同實現方法重載,因爲在某些時候我們不需要關係方法的返回值是系統根本不知道我們需要調用的是哪個方法。

        在程序設計我們往往會忘記清理工作,Java爲了減輕程序員的清理工作設計了一個垃圾回收機制。Java的垃圾回收機制完成了我們開發中大部分的垃圾回收清理工作,但是這不代表我們就不需要釋放清理無用垃圾。Java中的垃圾回收有兩種方式,第一種是“標誌-清掃”方式,第二種是“停止-複製”方式。“標誌-清掃”所依據的思路是從堆棧和靜態存儲區出發,遍歷所有的引用,進而找出所有存活的對象,每當它找到一個存活對象就會給對象設置一個標誌,此過程中不會回收任何對象。直到標誌工作全部完成之後清理工作纔開始。由此來看“標誌-清掃”方式相對較慢。“停止-複製”顧名思義就是程序先停止運行,尋找所有存活的對像,把存活的對象複製到另外一個新堆,釋放舊堆棧上的對象。由此可見堆棧的利用有所下降,工作量較大耗費的資源更多。因此在Java中,虛擬機將對內存實時監控,如果所有對象都很穩定,垃圾回收期的效率減低的話就切換到“標誌-清理”方式,虛擬機會跟蹤“標誌-清理”的效果,如果堆空間出現很多碎片的時候就切換到“停止-複製”方式,這種自動適應的方式被稱爲“自適應的、分時的、停止-複製、標誌-清理”式垃圾回收器。

       可變參數列表。可變參數方法一般用於參數個數不確定的情況下,一般來說可變的參數都直接或間接繼承於Object類。


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