簡介
經過前二期所介紹的「Varargs」和「Enhanced for loop」之後,我們可以看到從JDK 5.0所新增加的功能裡,擁有不少功能仰賴著Java Compiler在編譯時期幫我們加上「調味料」來處理,雖然更簡單易學易用,不過終究仍需了解底層的實作細節,才能徹底掌握程式本身的特性,尤其是本文所即將剖析的「Autoboxing/Unboxing」功能,常會使許多初學Java的朋友們產生「知其然而不知其所以然」的現象,正如俗話所說的「水能載舟亦能覆舟」,「Autoboxing/Unboxing」的確可以幫我們減少許多在敲打鍵盤上所需要的寶貴光陰,但若是沒能徹底掌握它,彷彿也為自己埋下了一顆不定時的炸彈,現在我們就來了解「Autoboxing/Unboxing」究竟是何方神聖。
在Java程式語言裡有分成兩種型別,一種是基本資料型別(Primitive Data Types),另一種則是物件參考型別(Object Reference Types),而本文的「Autoboxing/Unboxing」功能便是將針對基本資料型別(表1)來做轉換處理,所以當我們想將這八種基本資料型別轉換成物件來操作時,這時候我們就必須將它「裝箱」(Boxing),何謂「裝箱」呢?簡單的說法就是將Java所提供對應的Wrapper Class來加以包裝,當然既然有「裝箱」必然也會有「拆箱」(unboxing)的動作,那何謂「拆箱」呢?拆箱所指的就是呼叫其對應的Wrapper Class所各自擁有的「xxxxValue()」方法,諸如:intValue()、floatValue()、charValue()…,所以「Autoboxing/Unboxing」簡單地來說,也就是Java Compiler在編譯時期幫我們做這層的轉換處理。