java 類型系統包括兩個部分:基本類型、引用類型java
- 每個基本類型都有一個引用類型與之對應,稱爲裝箱基本類型
基本類型和裝箱類型三個主要區別性能
- 基本類型只有值,裝箱類型卻有和他們值不一樣的同一性
- 基本類型只有功能完備的值,裝箱類型都有非功能值:null
- 基本類型比裝箱類型更加節省時間和空間
考慮這個比較器測試
- 能經過不少的測試
- 可是,測試 naturalOrder.compare(new Integer(42),new Integer(42))==1(正確結果應該是0)
緣由分析指針
- first< second 會致使自動拆箱
- first == second 不會自動拆箱,而是兩個對象引用的比較,答案確定是否認的

修正上述程序對象

考慮下述程序blog
- 裝箱類型和基本類型比較時,裝箱類型會自動拆箱,初始值是null
- null 自動拆箱 拋空指針異常

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

使用裝箱基本類型的幾個合理的地方引用
- 集合中的元素鍵值
- 參數化類型中,必須使用裝箱類型 ,如 ThreadLocal<Integer>
- 反射的方法調用必須使用裝箱類型
總結:反射
- 能夠選擇的狀況下,基本類型優於裝箱類型
- 基本類型更加簡單更加快速
- 特別注意 在作 == 運算時,裝箱類型比較的是兩者的引用對象
- 自動裝箱,致使高開銷和對象建立