有時須要須要將基本數據類型轉換爲對象,因此就須要包裝器(wrapper)的存在,全部的基本類型對應都有一個包裝器類app
int——Integer對象
long——Long編譯器
float——Float編譯
double——DoubleList
short——Short數據類型
byte——Bytefloat
(注:以上六個類派生於公共的超類Number)方法
character——Character數據
void——Void類型轉換
boolean——Boolean
在Java SE 5.0以後開始出現自動裝箱(autoboxing)(boxing這種說法源自C#),以下:
ArrayList<Integer> list = new ArrayList<>();
list.add(3);
將被自動裝箱爲
list.add(Integer.valueOf(3));
這就是自動裝箱(autoboxing)
相反地,當將一個Integer對象賦給一個int值,將會自動拆箱
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
· 自動裝箱的規範要求boolean、byte、char≤127,介於-128~127之間的short和int被包裝到固定的對象中,例如:
Integer a = 1000;
Integer b = 1000;
System.out.println(a == b); // false
然而
Integer a = 100;
Integer b = 100;
System.out.println(a == b); // true
· 裝箱和拆箱操做是編譯器承認的,而不是JVM,編譯器會在生成字節碼文件的時候插入必要的方法調用
· 包裝器類是不可變的,包含在包裝器中的內容不會改變
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※