2018.10.6學習筆記
阿新 • • 發佈:2018-11-10
10.6學習筆記
今天學習了《Java程式設計思想》的第五章以及《大話設計模式》的第六章。下面對今日學習收穫與疑惑作總結。
《Java程式設計思想》部分:
1.預設構造器:
如果你寫的類中沒有構造器,則編譯器會自動幫你建立一個預設的構造器。但是,如果你已經定義了一個構造器(無論是否有引數),編譯器就不會幫你自動建立預設構造器。
2.this關鍵字:
①this關鍵字通常表示的是對當前物件的引用。
②Java在構造方法中,語句this(引數列表)應在任何可執行語句之前出現,無引數或引數少的構造方法可以用this呼叫引數多的構造方法。
3.垃圾回收:
①Java有垃圾回收器負責回收無用物件所佔的記憶體資源
②finalize()是Object中的方法,當垃圾回收器將要回收物件所佔用的記憶體之前被呼叫,即當一個物件被虛擬機器宣告死亡時會呼叫它的finalize()方法,讓次物件可以處理它生前的最後事情,並且在下一次垃圾回收動作發生時刻,才會真正回收物件所佔的記憶體。
③如果Java虛擬機器並未面臨記憶體耗盡的情形,他是不會浪費時間去執行垃圾回收以恢復記憶體的,因為垃圾回收本身也有開銷,如果不去使用它,那麼就不用支付這方面的開銷。
④垃圾回收器對於提高物件的建立速度,卻具有明顯的效果。儲存空間的釋放竟然會影響儲存空間的分配。
4.初始化:
①變數的初始化發生在任何的方法(包括構造方法)被呼叫之前。無論變數在何處被宣告,在方法下面或者構造方法下面也好。
②靜態變數只有在必要時刻才會進行初始化(建立對應的物件,此物件需要呼叫靜態變數),此後,靜態變數不會再次被初始化,即靜態變數只會初始化一次(非靜態變數在每次建立物件時候都會進行初始化)。
③初始化的順序是先靜態再非靜態。
④構造方法實際上也是靜態方法。
《大話設計模式》部分:
裝飾模式:
①定義:動態的給一個物件增加一些額外的職責。就擴充套件功能而言,裝飾模式提供了一種比使用子類更加靈活的替代方案。
②透明裝飾模式與半透明裝飾模式:
透明裝飾模式
半透明裝飾模式也就是對具體構件型別是透明的,但是對具體裝飾型別必須指定,是不透明的。即Component component是透明的,ComponentDecorator componentDecorator是不透明的,必須指定具體裝飾型別。
③裝飾模式的優缺點:
優點:可以對一個物件進行多次裝飾;比繼承更加靈活,不會導致子類的個數急劇增加(這點比較重要);
缺點:大量小的物件的產生會佔用更多的系統資源,在一定程度上影響程式的效能。
④裝飾模式適用環境:
當不能採用繼承的方式對系統進行擴充套件或者採用繼承不利於系統的擴充套件和維護時可以採用裝飾模式(例如會導致子類個數的急劇增加)。