一、包裹器
Long、Integer、Double、Float、Boolean、Byte 類別主要目的,就是提供物件實例作為殼,將基本型態包裹在物件之中,如此一來,就可以操作這個物件,像是將基本型態當作物件操作。
若運算式中都是int,就只會在int空間中做運算,結果會是整數,因此 data 1 / 3 就會顯示3的結果。可以操作Integer的doubleValue將包裹值以double型態傳回,如此就會在double空間中做相除,結果就會顯示3.333…。
Integer提供compareTo方法,可與另一個Integer物件進行比較,如果包裹值相同就傳回0,小於compareTo傳入物件包裹值就傳回-1,否則就是1,與 == 或 != 只能比較是否相等或不相等,compareTo方法可以傳回更多的資訊。
二、自動裝箱
編譯器會自動判斷是否能進行自動裝箱,在上例中你的number會參考Integer實例,同樣的動作可適用於boolean、byte、short、char、long、float、double等基本型態,分別會使用對應的Boolean、Byte、Short、Character、Integer、Long、Float 或 Double包裹基本型態。
相反的,編譯器也可以自動拆箱。