Java基礎 【自動裝箱和拆箱、面試題】


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 新創建

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM