基本類型優於封裝類型(49)

java 類型系統包括兩個部分:基本類型、引用類型java

  • 每個基本類型都有一個引用類型與之對應,稱爲裝箱基本類型

基本類型和裝箱類型三個主要區別性能

  1. 基本類型只有值,裝箱類型卻有和他們值不一樣的同一性
  2. 基本類型只有功能完備的值,裝箱類型都有非功能值:null
  3. 基本類型比裝箱類型更加節省時間和空間

考慮這個比較器測試

  • 能經過不少的測試
  • 可是,測試 naturalOrder.compare(new Integer(42),new Integer(42))==1(正確結果應該是0)

緣由分析指針

  • first< second 會致使自動拆箱
  • first == second 不會自動拆箱,而是兩個對象引用的比較,答案確定是否認的

修正上述程序對象

  • 倆基本類型的局部變量

考慮下述程序blog

  • 裝箱類型和基本類型比較時,裝箱類型會自動拆箱,初始值是null
  • null 自動拆箱 拋空指針異常

頻繁裝箱拆箱致使性能明顯降低變量

使用裝箱基本類型的幾個合理的地方引用

  1. 集合中的元素鍵值
  2. 參數化類型中,必須使用裝箱類型 ,如 ThreadLocal<Integer>
  3. 反射的方法調用必須使用裝箱類型

總結:反射

  • 能夠選擇的狀況下,基本類型優於裝箱類型
  • 基本類型更加簡單更加快速
  • 特別注意 在作 == 運算時,裝箱類型比較的是兩者的引用對象
  • 自動裝箱,致使高開銷和對象建立
相關文章
相關標籤/搜索