1. 程式人生 > >第五章 - 初始化與清理

第五章 - 初始化與清理

5.1 用構造器確保初始化
採用構造器來初始化物件, 與類的名字一致, 沒有返回值
5.2 方法過載 - 方法名字一樣, 形參不一樣
5.3 預設構造器 - 編譯器預設建立, 一般有其他的建構函式, 編譯器就不在自動建立預設構造器
5.4 This 關鍵字

  • 在方法中使用, 表示對當前方法的物件的引用
  • 在建構函式中呼叫建構函式,必須置於方法起始處,而且只能呼叫一次

5.5 清理 : 終結處理和垃圾回收
一旦垃圾回收器準備釋放物件佔用的儲存空間,將首先呼叫finalize方法, 並在下一次垃圾回收動作發生時,在真正的回收物件佔用的記憶體
如何標記物件死亡 ?
1) 引用計數 - 迴圈依賴的問題解決不了
2) 可達性分析 - 從棧和靜態儲存區開始遍歷引用
垃圾回收的特點 - 自適應、停止複製、標記清除,分代的
5.6 成員初始化
Java盡力保證所有的變數在使用前都被恰當的初始化; 對於區域性變數, 如果沒有初始化,會提示編譯錯誤; 對於成員變數,基本型別有預設的初始值, 對於引用型別, 預設值為Null
5.6.1 指定初始化
可以在成員變數定義處為其賦值
5.7 構造初始化
建構函式仍然無法阻止自動初始化的進行, 會在建構函式呼叫之前進行預設初始化
5.7.1 初始化順序
在類的內部, 變數定義的順序決定了變數的初始化順序
5.7.2 靜態資料初始化
無論建立多少個物件,靜態資料都只有一份儲存區域
物件的建立過程
1)載入class
2)在堆上為物件分配空間,成員變數為預設值
3) 執行出現於欄位定義處的初始化
4) 執行構造器
5.7.3 顯示的靜態初始化
5.7.4 非靜態例項初始化
5.8 陣列初始化