大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java裝箱與拆箱相關面試題

Java裝箱與拆箱相關面試題

更新時間:2020-09-10 16:30:55 來源:動力節(jié)點 瀏覽2917次

一.什么是裝箱?什么是拆箱?

Java為每種基本數(shù)據(jù)類型都提供了對應的包裝器類型,至于為什么會為每種基本數(shù)據(jù)類型提供包裝器類型在此不進行闡述,有興趣的朋友可以查閱相關資料。在Java SE5之前,如果要生成一個數(shù)值為10的Integer對象,必須這樣進行:

Integer i = new Integer(10);

而在從Java SE5開始就提供了自動裝箱的特性,如果要生成一個數(shù)值為10的Integer對象,只需要這樣就可以了:

Integer i = 10;

這個過程中會自動根據(jù)數(shù)值創(chuàng)建對應的Integer對象,這就是裝箱。

那什么是拆箱呢?顧名思義,跟裝箱對應,就是自動將包裝器類型轉換為基本數(shù)據(jù)類型:

Integer?i?=?10;?//裝箱
int?n?=?i;?//拆箱

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

下表是基本數(shù)據(jù)類型對應的包裝器類型:

java裝箱筆試題

裝箱和拆箱是如何實現(xiàn)?

如下代碼理解一下:

public?class?Main?{
public?static?void?main(String[]?args)?{
Integer?total?=?99;?//自動裝箱
int?totalprim?=?total;?//自定拆箱
}
}

反編譯class文件之后得到如下內(nèi)容:

java裝箱筆試題

Integer total=99;執(zhí)行上面那句代碼的時候,系統(tǒng)為我們執(zhí)行了:Integer total=Integer.valueOf(99);

int totalprim=total;執(zhí)行上面那句代碼的時候,系統(tǒng)為我們執(zhí)行了:int totalprim=total.intValue();

也就是在裝箱的時候自動調用的是Integer的valueOf(int)方法。而在拆箱的時候自動調用的是Integer的intValue方法。

其他的也類似,比如Double、Character。

因此可以用一句話總結裝箱和拆箱的實現(xiàn)過程:

裝箱過程是通過調用包裝器的valueOf方法實現(xiàn)的,而拆箱過程是通過調用包裝器的xxxValue方法實現(xiàn)的。(xxx代表對應的基本數(shù)據(jù)類型)。

java 語句 Integer i = 1; i += 1; 做了哪些事情?

首先Integer i=1;做了自動裝箱(使用valueOf()方法將int裝箱為Integer類型),接著i+=1;先將Integer類型的i自動拆箱成int(使用intValue()方法將Integer拆箱為int),完成加法運行之后的i再裝箱成Integer類型。

下面程序的運行結果是什么?

java裝箱筆試題

答:答案如上注釋所述,通過查看Integer的源碼可以發(fā)現(xiàn),針對-128到127之間的數(shù)據(jù)做了一個數(shù)據(jù)緩沖池,如果數(shù)據(jù)是該范圍內(nèi)的,每次并不創(chuàng)建新的對象,所以就有了上面的結果。

下面語句能正常執(zhí)行嗎?

Integer?test1?=?(Integer)?null;
Double?test2?=?(Double)?null;Boolean?test3?=?(Boolean)?null;

答:上面語句可以正常執(zhí)行。因為在 java 中 null 既不是對象也不是一種類型,它僅是一種特殊的值,我們可以將其賦予任何引用類型,也可以將 null 轉化成任何類型。

下面這段代碼的輸出結果是什么?

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的實現(xiàn)。

在這里只解釋一下為什么Double類的valueOf方法會采用與Integer類的valueOf方法不同的實現(xiàn)。很簡單:在某個范圍內(nèi)的整型數(shù)值的個數(shù)是有限的,而浮點數(shù)卻不是。

注意,Integer、Short、Byte、Character、Long這幾個類的valueOf方法的實現(xiàn)是類似的。

Double、Float的valueOf方法的實現(xiàn)是類似的。

java裝箱筆試題

以上就是動力節(jié)點java培訓機構的小編針對“Java裝箱與拆箱相關面試題”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲综合国产精品 | 欧美激情久久久久久久久 | 亚洲视频在线免费看 | 成 人 黄 色 大 片 | 国产欧美日韩中文久久 | 国产午夜视频在线观看第四页 | 日韩不卡视频在线观看 | 日韩免费一级片 | 亚洲香蕉一区二区三区在线观看 | 久久久久久尹人网香蕉 | 香蕉视频18 | 国产成人亚洲综合网站不卡 | 国产视频久 | 一本伊在人香蕉线观新在线 | 中文字幕视频在线播放 | 亚洲精品亚洲一区二区 | 国产在线精彩视频二区 | 四虎在线观看网址 | 久久综合综合 | 夜色伊人| 精品视频网站 | 99久久国产综合精品网成人影院 | 日本中文字幕不卡免费视频 | 色综合色综合色综合色综合网 | 国产网站精品 | 天天碰天天摸天天操 | 日韩欧美一级大片 | 国产成人亚洲综合网站不卡 | 亚洲免费小视频 | 久九精品 | 日本草草视频 | 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 | 狠狠色丁香婷婷综合精品视频 | 99视频精品全部在线播放 | 免费观看四虎精品国产永久 | 女人十八毛片免费特黄 | 美国黑人特大一级毛片 | 嫩模被xxxx视频在线观看 | 精品亚洲在线 | 国产丶欧美丶日韩丶不卡影视 | 国产精品久久二区三区色裕 |