自动拆箱和装箱
在面向對象編程中,最理想的情況是“一切皆是對象”,但顯然八個基本數據類型不是對象,如何統一這一問題呢?使用包裝類。Java 提供了八個包裝類,分別對應于八個基本數據類型,并且包裝類既然是類,因此也擁有方法和屬性等類的特征。
Java 中的八個類如下表所示。
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| double | Double |
| char | Character |
| boolean | Boolean |
自動拆箱和裝箱,其目的是方便基本數據類型和其對應的包裝類型之間的轉換。開發者可以直接把一個基本數據類型的值賦給其包裝類型(裝箱),反之亦然(拆箱),中間的過程由編譯器自動完成。
編譯器對這個過程也只是做了簡單的處理,通過包裝類的 valueOf() 方法對基本數據類型進行包裝,通過包裝類提供的形如xxxValue() 方法得到其基本數據類型。具體而言,Integer 中自動拆箱的方法是 intValue(),Short 中的是 shortValue(),Float 中的是 floatValue(),Character 中的是 charValue()。例如下面的代碼:
Integer stuAgeI = 23; int stuAge = stuAgeI;編譯器將其自動變換為:
Integer stuAgeI = Integer.valueOf(23); int stuAge = stuAgeI.intValue();包裝類的 valueOf() 方法,對部分經常使用的數據采用緩存技術,也就是在未使用的時候,這些對象就創建并緩存著,需要使用的時候不需要新創建該對象,直接從緩存中獲取即可,從而提高性能。例如 Byte、Integer 和 Long 這些包裝類都緩存了數值在 -128 ~ +127 之間的對象,自動裝箱的時候,如果對象值在此范圍之內,則直接返回緩存的對象,只有在緩存中沒有的時候再去創建一個對象。
總結
- 上一篇: 根据遍历序列画二叉树
- 下一篇: newInstance() 方法