1.包裝類是什么?
java中我們經常將基本資料型別轉換為物件,例:將基本資料型別存盤到object[]陣列或集合中進行操作
為了解決這個問題,Java在設計類的時候為每個基本資料型別設計了一個對應的類進行代表
這八個和基本資料型別對應的類統稱包裝類
包裝類位于java.lang包下
以下是八種資料型別對應的包裝類
byte--Byte
boolean--Boolean
short--Short
char--Character
int--Integer(常用)
long--Long
float--Float
double--Double
這八個包裝類,只有int和char對應的包裝類有比較大的差別
2.包裝類的用法
包裝類的主要用途有兩種:
1.作為和基本資料型別對應的型別存在,方便涉及到物件的操作,如Object[]、集合等的操作
2.包含每種基本資料型別的相關屬性,如最大值和最小值等,以及相關的操作方法(這些操作方法的作用是在基本資料型別、包裝類物件、字串之間提供相互之間的轉化)
例:(Interger類的使用,其他包裝類用法類似)

3.自動裝箱和拆箱
自動裝箱和拆箱就是將基本資料型別和包裝類之間進行自動的相互轉換,(JDK1.5后,java才有自動裝箱和拆箱)
1.自動裝箱
基本資料型別處于需要物件的環境中時,就會自動轉換為“物件”,
例:在JDK1.5之前,Integer i=5是錯誤的,必須寫成Integer i=new Integer(5),這樣實作了基本資料型別轉換為包裝類,
而JDK1.5之后,Integer i=5這樣的陳述句就可以實作將基本資料型別轉換為包裝類,
這是因為JVM幫我們執行了Integer i=Ingeter.valueOf(5)這句話,這就是自動裝箱,
2.自動拆箱
每當需要一個值的時候,物件回自動轉成基本資料型別,沒必要再去顯示呼叫intValue()、doubleValue()等轉型方法,
例:Integer i=5;int j=1;這樣的程序就是自動拆箱
總結:
自動裝箱的程序是通過呼叫包裝了的valueOf()方法實作的,而自動拆箱程序是通過呼叫包裝類的xxxValue()方法實作的
例:

4.包裝類快取問題
整形、char型所對應的包裝類,在自動裝箱時,對于-128~127這個區間的值會進行快取處理,其目的是提高效率
快取處理原理:
如果資料在-128~127之間,那么在類的加載時就已經為該區間的每個數值創建了物件,并將這256個物件存放到一個名為cache的陣列中
,每當自動裝箱程序發生時,或者手動呼叫valurOf()時,就會先判斷資料是否在該區間,如果在,則直接獲取陣列中對應的包裝類物件參考
,如果不在則會通過new呼叫包裝類的構造方法來創建物件,
例:


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/157150.html
標籤:Java
