JDK 1.5 (以后的版本)的新特性自動裝箱和拆箱
1. 自動裝箱:把基本類型轉換為包裝類類型
int a =10;
Integer i = new Integer(a);
Integer value = 10;
為什么基本類型就能直接轉化為Integer ,Integer 不應該是new出來的嗎
內部會自動的 new Integer(10) 自動裝箱
2. 自動拆箱: 把包裝類型轉換為基本類型
Integer value2 = new Integer(120);
int a = value2;
對象賦值給基本數據類型,為什么會不報錯,因為內部會調用 value2.intValue() 這種就是自動拆箱
舉一反三
Double d1 = 9.14 //內部會自動new一個Double 然后傳遞進去
new 出來的東西 每個都會分配一個內存地址
拆箱:devaning
裝箱:
裝箱拆箱面試題: 考點(Integer內部裝箱的內部實現)
看程序寫結果
1.
Integer value1 = new Integer(97);
Integer value2 = new Integer(97);
System.out.println(value1 == value2);
System.out.println(value.equals(value2)); //這個就是比較值
System.out.println("-------------------");
答案 : false true
2. 自動裝箱,如果值一樣、地址也一樣
Integer value3 = 127; //自動裝箱
Integer value4 = 127;
System.out.println(value3 == value4);
System.out.println(value3.equals(value4)); //這個也是比較值
答案:true true
`3.
Integer value5 = 128;
Integer value6 = 128;
System.out.println(value5==value6); //false
System.out.println(value5.equals(value6)); //true
答案: false true
總結: 自動裝箱,范圍在 -128 ~ 127 【256個數字 】的地址是一樣的,其他范圍地址不一樣
-128 到 127 之間的有個自動裝箱的緩存池 如果不在這個范圍,就會使用new 新創建