重溫Java基礎(四)

1.代碼塊

  • 代碼塊中定義的變量是局部變量。
  • 初始化代碼塊是放在構造函數中執行的,定義在類中的。
  • 局部代碼塊是定義在方法中的。

1.1.靜態代碼塊

  • 在加載字節碼的時候就執行了
  • 在主方法之前執行的,只執行一次。

2.組合關係  class Person { Dog pet ; }  當第一次使用的時候加載到JVM當中,只加載一次,之後從內存中直接使用。

3.類的加載:當第一次創建該類對象的時候,加載到內存中。在加載的時候,會執行static

3.1.字段初始化問題

  • 靜態字段初始化,是在靜態代碼塊中初始化
  • 非靜態字段初始化,是在構造器中初始化
  • 子類構造器默認會調用父類的構造器。

4.final關鍵字,繼承的弊端,破壞了我們的封裝,子類可以訪問父類的實現細節,,可以覆蓋父類中的方法,如何避免這種情況?

  • final可以修飾字段,必須手動初始化值。 final修飾一個變量,就代表一個常量。規則是,字段大寫MAX_VALUE
  • final修飾方法的時候,方法不能被覆蓋。
  • final修飾類的時候,該類不能被繼承。
  • final修飾基本數據類型的時候,代表值不能修改,當final修飾引用數據類型的時候,代表地址不能被修改。

5.設計模式

5.1.單例模式,一個類在內存當中只有一個對象,別人不能再創建對象。

  • 餓漢模式  代碼實現   (餓漢模式的單例不能被繼承)
  1. 必須要在該類中創建一個對象出來。
  2. 私有化自己的構造器防止外界通過構造器來創建新的對象。
  3. 給外界提供一個方法,能夠獲取已經創建好的對象。
  • 單例模式的好處
  1. 控制自資源的使用
  2. 控制實例的產生數量,節省資源
  3. 作爲通信媒介,數據可以共享,變量值可以共享。

5.2 如何設計工具類

  • 一般都設計成static的方法,通過類名去調用
  • 如果一個工具類沒有使用static,那麼我們一般把工具類設計成單例,通過單例獲取對象調用工具類方法
  • 如果工具類全部使用static修飾,此時必須把工具類的構造器私有化,防止創建對象調用靜態方法。(有什麼區別)

6.包裝類:對基本數據類型進行包裝,把基本數據類型包裝成一個對象

  • 把基本數據類型變成包裝類就是裝箱操作。自動裝箱,就是把一個基本數據類型的值賦值給包裝類。
  • 把包裝類轉換成基本數據類型,就是拆箱操作。自動拆箱,就是一個包裝類賦值給基本數據類型。
  • new Boolean("true"),除了true,其他全部是false。

6.1 基本數據類型和包裝類的區別

  • 初始值不同,一個是0,一個是null
  • 包裝類提供了很多方法可以直接使用
  • 集合框架不允許存放基本數據類型,只能存放對象

6.2什麼時候使用基本數據類型,什麼時候使用包裝類

  • 類中的成員變量一般使用包裝類
  • 方法中,一般使用基本數據類型,基本數據類型存放再棧中,包裝類型存放再堆中6

6.3 包裝類的緩存設計 Integer.valueof();Integer的緩存範圍-128~127

 

 

 

 

 

 

 

 

 

 

 

 

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