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

java裝箱與拆箱

發布時間: 2022-09-25 06:18:26

java中的自動裝箱與自動拆箱是什麼意思

java 基本類中 四類八種,int long 等等,
java 包裝類型 也是八種 Integer Long 等等;
這些基本都知道,

實例化一個對象,
Test test = new Test(參數);
而包裝類,可以這么寫:
Integer a = 100; 這是自動裝箱;
int b =a ; 這是自動拆箱

⑵ java中什麼是自動裝箱與拆箱呢

裝箱比如int變Integer,如果某個地方的參數需要填入Integer,你傳int給它,它自動會生成一個Integer傳過去。反之,Integer變int,就是自動拆箱。

⑶ 什麼是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

⑷ java 什麼是拆箱和裝箱,拆箱和裝箱 嘛用啊

詳解Java的自動裝箱與拆箱(Autoboxing and unboxing)

一、什麼是自動裝箱拆箱

很簡單,下面兩句代碼就可以看到裝箱和拆箱過程

//自動裝箱
Integertotal=99;

//自定拆箱
inttotalprim=total;

簡單一點說,裝箱就是自動將基本數據類型轉換為包裝器類型;拆箱就是自動將包裝器類型轉換為基本數據類型。

下面我們來看看需要裝箱拆箱的類型有哪些:

我有一個微信公眾號,經常會分享一些Java技術相關的干貨文章,還有一些學習資源。
如果你需要的話,可以用微信搜索「Java團長」或者「javatuanzhang」關注。

⑸ java為什麼需要裝箱,拆箱

這里有個博文你看看

其實,我個人就覺得你不要把這事想復雜了,想不通可以先打個標記,學深了在回來想!

不然你卡住這里,很難受,深有體會!

我個人總結就簡單兩點:

1.Java中萬事萬物皆對象,基礎數據類型它不是對象,所以它需要穿個衣服,包裝成對象!

2.效率問題;

簡單舉個例子:3.1415926這個數字;

如果你把它包裝成對象了,你可以對它進行花式操作:

比如四捨五入,比如保留多少位小數,比如格式化,比如大數的計算精度問題...這些都是Java寫好對象,你拿著直接用就可以了!

當然這些功能你自己也能辦到..太累,而且你考慮的也不全面,更重要的是不安全!

⑹ java中的自動拆箱,裝箱是指什麼

裝箱就是把基礎類型封裝成一個類。比如把int封裝成Integer,這時你就不能把他當成一個數了,而是一個類了,對他的操作就需要用它的方法了。拆箱就是把類轉換成基礎類型。比如你算個加法什麼的是不能用類的,就得把它轉換成基本類型,jdk5以後已經可以自動轉換了貌似。基本類型你應該懂的吧,就那八種

⑺ java 為什麼要有裝箱和拆箱

把一個基本類型包裝成一個類,一個是可以使這個類型具有很多可以調用的方法。二個是Java向面像對象語言的靠近。其實Java還不算是很純的面向對象的語言。真正的面向對象,是沒有基本數據類型的。它只有一種類型,就是對象。三個是在泛型中,基本類型是不可以做泛型參數的。如:List <int> list = new ArrayList<int> ();這是不合法的。你只能這個樣寫List<Integer> list = new ArrayList<Integer> ();也就是要用int型的包裝類類型來解決基本類型不可以做泛型參數的問題 。
一名話,包裝類有更多的方法和用途, 而這是基本類型沒有的!!!

熱點內容
安卓原神退款後為什麼登不上 發布:2025-01-01 23:04:30 瀏覽:251
查看服刑人員要編好和密碼是什麼 發布:2025-01-01 23:00:09 瀏覽:703
閑聊賬號密碼是多少 發布:2025-01-01 22:58:26 瀏覽:519
1個機櫃的存儲量 發布:2025-01-01 22:57:49 瀏覽:635
sqlaccess自動編號 發布:2025-01-01 22:47:21 瀏覽:138
android字元截取 發布:2025-01-01 22:47:18 瀏覽:76
如何把服務端部署在伺服器上 發布:2025-01-01 22:46:35 瀏覽:976
內網外網域名訪問 發布:2025-01-01 22:32:35 瀏覽:64
安卓機怎麼使用谷歌瀏覽器 發布:2025-01-01 22:27:22 瀏覽:740
長輪詢php 發布:2025-01-01 22:27:22 瀏覽:948