天天看點

java特性之自動拆裝箱

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)      陷阱一(示例)

java特性之自動拆裝箱

b)     陷阱二(示例)

java特性之自動拆裝箱

享元模式(flyweight)

為了加大對簡單數字的重利用,java定義:在自動裝箱時對于值從–128到127之間的值,它們被裝箱為Integer對象後,會存在記憶體中被重用,始終隻存在一個對象

而如果超過了從–128到127之間的值,被裝箱後的Integer對象并不會被重用,即相當于每次裝箱時都建立一個 Integer對象