java編程思想(Think in java)讀書筆記 二

來源:互聯網
上載者:User

四、初始化和清理
1.finalize()方法:一旦記憶體回收行程準備好釋放對象佔用的儲存空間,將首先調用其finalize()方法,並且在下一次垃圾
回收動作發生時,才會真正回收對象佔用的記憶體。用finalize方法,可以在記憶體回收時刻做一些清理工作。

finaliz主要作用是為處理或者釋放使用非java代碼的方式分配的記憶體。在jvm中有“本地方法”可能是用C或者C++編寫的,
C、C++是用malloc函數分配儲存空間,用free函數釋放記憶體的。所以finalize方法一般是用來調用本地方法清理記憶體的。
2.回收器
特點、方式:  自適應的、分代的、停止-複製、標記-清掃

java虛擬機器中,記憶體配置以較大的"塊"為單位。
分代:
大致分新生代,老生代,每個塊都有相應的代數,如果“塊”在某處被引用,其代數會增加,記憶體回收行程將對
上次回收動作之後新分配的塊進行整理,這種對清理大量短命的臨時對象很有協助
停止-複製:
要求在釋放舊有對象之前,必須先把所有存活對象從舊堆複製到新堆,將導致大量的記憶體複製行為,
而有了“塊”之後,記憶體回收行程在回收的時候就可以往廢棄的“塊”裡拷貝對象。會重新整理對象,使其保持
緊湊排列。
標記-清理:
從堆棧和靜態儲存區出發,遍曆所有的引用,進而找出所有存活的對象。每當找到一個存活對象,就會
給對象設一個標記,此時不會回收對象。當全部標記工作完成的時候,清理動作開始執行。清理過程中,沒有標記
的對象將被釋放,標記的存活的對象被複製。所以此時剩下的堆空間是不連續的。
自適應:
java虛擬機器會進行監視,如果所有對象都很穩定,記憶體回收行程的效率降低的話,就切換到“標記-清掃”
方式;同意java虛擬機器會跟蹤“標記-清掃”的效果,要是堆空間出現很多片段,就回切換到“停止-複製“模式。
五、複用類

組合關係、繼承關係、代理關係

1.可以為每個類都建立一個main()方法,這種在每個類中都設定一個main方法的技術可以使每個類的單元測試都變得簡便易行。
而且在完成單元測試之後,也無需刪除main,可以將其留待下次測試。
2.
組合關係:"has-a"關係
繼承關係:"is-a"關係

繼承技術應該慎用,到底是該用組合還是繼承,一個最清晰的判斷辦法就是問一問自己是否需要從子類向父類
進行向上轉型,如果必須向上轉型,則繼承是必要的,否則,應當好好考慮是否需要繼承。
3.final
final修飾引用變數時,指的是所指向的對象不變,即始終指向在那一個記憶體位址的對象,但是對象本山是可以
被修改的。這一限制同樣適用數組,它也是對象。
 4.載入
  類的代碼在初次使用時才載入。
  1)通常是指載入發生於建立類的第一個對象之時。
  2)當訪問static域和static方法時,也會發生載入。所有的static對象和static代碼塊都會在載入時
  依程式中的順序而依次初始化。僅初始化一次。
 
六、多態
1.java中除了static方法和final方法(private類型方法被隱式的指定為final方法)之外,其他所有的方法都是後期綁定。
靜態方法是與類,而非與單個的對象相關聯的的。編譯的時候靜態方法與類綁定在一起,屬於前期綁定。
2.多態是一項讓程式員"將改變的事物與未變的事物分離開來"的重要技術。
3.  
1) 為父類的執行個體變數分配記憶體
2) 為子類的執行個體變數分配記憶體
3) 為父類的執行個體變數執行賦值運算(初始化)
4) 執行父類的構造方法
5) 為子類的執行個體變數執行賦值運算(初始化)
6) 執行子類的構造方法

4.繼承和清理。按照與初始化順序相反的順序進行。
5.協變傳回型別,它表示子類中覆寫的方法可以返回父類方法的傳回型別的某種子類型。
6.在衍生類別中,對於基類中的private方法,最好採用不同的名字。

7.Use inheritance(繼承) to express differences in behavior(行為),and fields to express variations in state.

"用繼承來表達行為間的差異,用欄位表達狀態上的變化"
--繼承使不同的子類覆寫不一樣的具體方法內容,欄位一般是在其中設定一個引用,調用這個引用的某個方法,

--這個引用是幾個子類的父類或者介面,通過多態實現利用不同的子類來執行個體化介面,達到調用不同子類的目的。

========java編程思想第四版,下載連結===========================

http://download.csdn.net/detail/tzguo1314/5314416

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.