a) 自動裝箱拆箱
i. 回憶java的八種基本資料類型(java為我們提供了與基本資料類型相對應的引用資料類型)
ii. 基本資料類型和對象的差別
1. 基本資料類型不是對象。是以基本資料類型沒有可調用的方法
iii. 什麼是裝箱拆箱?(基本資料類型和引用資料類型的切換)
1. 裝箱:把基本類型用它們相應的引用類型包裝起來,使其具有對象的性質
2. 拆箱:和裝箱相反,将引用類型的對象簡化成值類型的資料
iv. 為什麼要有自動裝箱和拆箱
1. 想要把基本類型作為對象來處理,就必須自行轉換在,Java SE 5之後,為基本資料類型提供了自動裝箱和拆箱功能,使得将基本類型轉換為對象變得極其便捷
v. 什麼時候系統會自動進行裝箱和拆箱
1. 如果一個方法中參數類型為原始資料類型,所傳入的參數類型為其封裝類,則會自動對其進行拆箱;
2. 如果一個方法中參數類型為封裝類型,所傳入的參數類型為其原始資料類型,則會自動對其進行裝箱
vi. 自動裝箱拆箱的原理
1. 裝箱
a) Integeri = Integer.valueOf(1);
2. 拆箱
a) intintValue = i.intValue();
vii. (自動裝箱和拆箱,從本質上講,是編譯器幫了我們的忙,這就是所謂的“編譯器蜜糖”,既然這麼好,是不是就可以放心的用了呢?)
1. 使用自動拆裝箱時需要注意的陷阱。
a) 陷阱一(示例)
b) 陷阱二(示例)
享元模式(flyweight)
為了加大對簡單數字的重利用,java定義:在自動裝箱時對于值從–128到127之間的值,它們被裝箱為Integer對象後,會存在記憶體中被重用,始終隻存在一個對象
而如果超過了從–128到127之間的值,被裝箱後的Integer對象并不會被重用,即相當于每次裝箱時都建立一個 Integer對象