當前位置:首頁 » 編程語言 » java拆箱裝箱

java拆箱裝箱

發布時間: 2025-05-01 10:20:55

A. 什麼是java中的自動裝箱和自動拆箱

java自動裝箱和拆箱
基本數據類型,如int,float,double,boolean,char,byte,不具備對象的特徵,不能調用方法。
裝箱:將基本類型轉換成包裝類對象
int i=10;
Integer x=new Integer(i);手動裝箱
Integer y=10;自動裝箱
拆箱:將包裝類對象轉換成基本類型的值
Integer j=new Integer(8);
int m=j.intValue();//手動拆箱
int n=j;//自動拆箱
java為什麼要引入自動裝箱和拆箱的功能?又是怎麼實現的呢?
主要是用於java集合中,List<Inteter> list=new ArrayList<Integer>();
list集合如果要放整數的話,只能放對象,不能放基本類型,因此需要將整數自動裝箱成對象。
實現原理:javac編譯器的語法糖
public class Main {
public static void main(String[] args) {
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1==i2);
System.out.println(i3==i4);
}
}
//結果為:true false
在通過Integer.valueOf()方法創建Integer對象的時候,如果數值在[-128,127]之間,便返回指向IntegerCache.cache中已經存在的對象的引用(位於堆對象池中);否則創建一個新的Integer對象(創建在java堆中)。上面的代碼中i1和i2的數值為100,因此會直接從cache中取已經存在的對象,所以i1和i2指向的是同一個對象,而i3和i4則是分別指向不同的對象。
public class Main {
public static void main(String[] args) {
Double i1 = 100.0;
Double i2 = 100.0;
Double i3 = 200.0;
Double i4 = 200.0;
System.out.println(i1==i2);
System.out.println(i3==i4);
}
}
//結果為:false false
為什麼Double類的valueOf方法會採用與Integer類的valueOf方法不同的實現呢?很簡單:在某個范圍內的整型數值的個數是有限的,而浮點數卻不是。
public class Main {
public static void main(String[] args) {
Boolean i1 = false;
Boolean i2 = false;
Boolean i3 = true;
Boolean i4 = true;
System.out.println(i1==i2);
System.out.println(i3==i4);
}
}
//結果為:true true
至於為什麼是這個結果,同樣地,看了Boolean類的源碼也會一目瞭然。下面是Boolean的valueOf方法的具體實現:
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
public class H {
public static void main(String[] args) {
Integer m=10;
int n=10;
System.out.println(m==n);
}
}
//結果為:true

熱點內容
資料庫一鍵安裝 發布:2025-05-01 14:47:28 瀏覽:18
人生苦短我用python梗 發布:2025-05-01 14:44:12 瀏覽:721
房車水電配置需要什麼 發布:2025-05-01 14:42:38 瀏覽:494
linux主設備號從設備號 發布:2025-05-01 14:41:44 瀏覽:784
實現一個簡易的編譯器 發布:2025-05-01 14:35:48 瀏覽:879
vivo如何關閉qq隱私密碼鎖 發布:2025-05-01 14:28:27 瀏覽:505
宇視監控怎麼配置國際編碼 發布:2025-05-01 14:26:55 瀏覽:824
安卓如何改變手機版本 發布:2025-05-01 14:25:57 瀏覽:775
android外國 發布:2025-05-01 14:25:55 瀏覽:782
資料庫上億數據 發布:2025-05-01 14:18:31 瀏覽:582