讀《Java從入門到精通》——聯想筆記

正式接觸Java的第一本書——因爲書本內容講的很簡單也很淺顯,所以內容就不歸納了,這裏拓展一些閱讀時引發的聯想。


目錄

1、static用法

2、boolean存儲空間大小

3、構造方法的魔改

4、類繼承的本質

5、向上、向下轉型深究

6、探索迭代器Iterator的祕密

 


1、static用法


2、boolean存儲空間大小


3、構造方法的魔改

  • 原本的構造方法沒有返回值,加上返回值就能變身爲具有與類名同名的普通成員函數。
  • 無法加上static,構造方法是在創建對象的時候調用,而不是與類共存。
  • 單態設計模式需要用到private構造方法,其只能在類內部使用,既只能在類內用該構造方法實例化對象。

4、類繼承的本質

  • 繼承本質上只是在子類的構造函數中調用了父類的默認構造函數(super),如果構造函數帶參則子類需要手動調用,其中父類中的public屬性或方法在實例化時只會創建一次,並使得this與super均指向其地址,除非子類中再創建了一個(覆寫),此時this與super指向就不同了。而父類中的private與子類(this)無關僅僅與super有關並且在子類中還不能調用。子類創建的對象針對的都是this。

5、向上、向下轉型深究

  • 向上轉型(子->父):屬於自動轉換,只會丟失精度(不能使用子類特有的屬性或方法),但是可以通過向下轉型恢復。
  • 向下轉型(父->子):屬於強制轉換,有失敗的風險(可以使用instanceof來避免出錯),只有先向上轉型過的對象才能向下轉型。
  • 轉型要求:在引用數據類型中,只有有繼承關係的類型才能進行類型轉換。
  • 轉換的本質:類型轉換隻是轉換指向對象的引用的類型,對象本身沒有也不可能參與轉換,對象內存一直在。
  • 轉型的好處:自動轉換可以節省代碼:https://www.cnblogs.com/buptldf/p/4959480.html
  • 圖解:


6、探索迭代器Iterator的祕密

  • 迭代器:迭代器(Iterator)是一個對象,它的工作就是遍歷並選擇序列中的對象,它提供了一種訪問容器(container)對象中的各個元素,而又不必暴露該對象內部細節的方法。
  • 優點:Iterator總是用同一種邏輯來遍歷集合,使用時可以不用管底層數據具體是怎樣存儲的,並且其創建的代價很小,也便於代碼的複用。
  • 參考:https://blog.csdn.net/q5706503/article/details/85230897
  • 拓展:爲了更好的探究它指向哪兒以及更好的瞭解iterator遍歷的過程,明確迭代器指向的是誰?以及next返回的是誰?它是先後移還是先返回值?previous又返回了誰?我特地翻出了源碼,以ListIterator爲例,來康康這中間我們的iterator經歷了啥。
  • 截取了部分需要的java8代碼段:
  • 圖解:
  • 結論:1、迭代器指向的位置就是cursor所在的位置。2、next返回的是cursor所指向的值,然後cursor移動+1。3、先保留值,再移動,再返回值。4、previous返回的是cursor-1所指向的值,先移動,後傳值。

     

 

  

 

 

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