欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java之如何正確地對(duì)包裝類(lèi)進(jìn)行裝箱與拆箱

 更新時(shí)間:2023年04月28日 16:31:21   作者:哥Sun  
在這篇文章中給大家繼續(xù)講解包裝類(lèi)的裝箱和拆箱問(wèn)題。你可能會(huì)很好奇,做java開(kāi)發(fā),怎么還裝起箱子來(lái)了?那么就請(qǐng)大家?guī)е苫笸驴窗?/div>

配套開(kāi)源項(xiàng)目資料

Github:

github.com/SunLtd/Lear…

Gitee:

gitee.com/sunyiyi/Lea…

一. 裝箱

1. 概念

所謂的裝箱(Boxing),其實(shí)就是將基本類(lèi)型轉(zhuǎn)換成包裝類(lèi),例如把double變成Double。裝箱分為手動(dòng)裝箱和自動(dòng)裝箱(Auto Boxing),如果我們手動(dòng)實(shí)例化一個(gè)包裝類(lèi),這就是手動(dòng)裝箱。在JDK 1.5之前,必須進(jìn)行手動(dòng)裝箱;JDK 1.5之后,可以進(jìn)行自動(dòng)裝箱,不用再進(jìn)行手工操作,這就簡(jiǎn)化了開(kāi)發(fā),提供了方便。

2. 案例

下面的案例是手動(dòng)裝箱和自動(dòng)裝箱的實(shí)現(xiàn)過(guò)程。在JDK 1.5前后,裝箱有手動(dòng)裝箱和自動(dòng)裝箱之分,大家要注意。

public class BoxTest {
    public static void main(String[] args) {
	//JDK 1.5之前的拆裝箱過(guò)程--手動(dòng)拆裝箱
	byte b = 10;
	//手動(dòng)裝箱
	Byte b1 = Byte.valueOf(b);
	System.out.println("手動(dòng)裝箱后的結(jié)果,b1="+b1);
        //手動(dòng)裝箱的另一種形式
	int m = 100;
        Integer obj = new Integer(m);  
        //手動(dòng)拆箱的另一種形式
        int n = obj.intValue(); 
        System.out.println("n = " + n);
	//JDK 1.5之后的拆裝箱過(guò)程--自動(dòng)拆裝箱        
	int i = 10;
	//自動(dòng)裝箱
	Integer i001 = i;
	System.out.println("自動(dòng)裝箱后的結(jié)果,i001="+i001);
    }
}

二. 拆箱

1. 概念

所謂的拆箱(Unboxing),其實(shí)就是將包裝類(lèi)型轉(zhuǎn)換成基本類(lèi)型,例如把Double變成double。同樣的,拆箱也分為手動(dòng)拆箱和自動(dòng)拆箱(Auto Boxing),手動(dòng)實(shí)例化操作包裝類(lèi),就是手動(dòng)拆箱。在JDK 1.5之前必須手動(dòng)進(jìn)行拆箱,JDK 1.5之后就可以自動(dòng)拆箱了。

2. 案例

下面的案例是手動(dòng)拆箱和自動(dòng)拆箱的實(shí)現(xiàn)過(guò)程。在JDK 1.5前后,拆箱有手動(dòng)拆箱和自動(dòng)拆箱之分,大家要注意。

public class BoxTest {
    public static void main(String[] args) {
	//JDK 1.5之前的拆裝箱過(guò)程--手動(dòng)拆裝箱
	byte b = 10;
	//手動(dòng)裝箱
	Byte b1 = Byte.valueOf(b);
	System.out.println("手動(dòng)裝箱后的結(jié)果,b1="+b1);
	//手動(dòng)拆箱
	byte b2 = b1.byteValue();
	System.out.println("手動(dòng)拆箱后的結(jié)果="+b2);
	//JDK 1.5之后的拆裝箱過(guò)程--自動(dòng)拆裝箱        
	int i = 10;
	//自動(dòng)裝箱
	Integer i001 = i;
	System.out.println("自動(dòng)裝箱后的結(jié)果,i001="+i001);
	//自動(dòng)拆箱
	int i002 = i001;
	System.out.println("自動(dòng)拆箱后的結(jié)果,i002="+i002);
    }
}

3. 小結(jié)

我們要注意,自動(dòng)裝箱和自動(dòng)拆箱只發(fā)生在編譯階段,其目的是為了減少代碼的編寫(xiě)。從性能上來(lái)看,裝箱和拆箱的過(guò)程會(huì)影響代碼的執(zhí)行效率,因?yàn)榫幾g后的class代碼是嚴(yán)格區(qū)分基本類(lèi)型和引用類(lèi)型的,所以編譯階段的裝箱和拆箱,在編譯后還是要回歸原始。另外在自動(dòng)拆箱時(shí),如果賦值不當(dāng),有可能會(huì)產(chǎn)生NullPointerException異常,如下所示:

Integer n = null;
//這里就會(huì)產(chǎn)生NPE空指針異常
int m = n;

三. 結(jié)語(yǔ)

至此,壹哥就把Java中的常用包裝類(lèi)給大家介紹完畢了,現(xiàn)在你知道包裝類(lèi)和基本類(lèi)型有什么聯(lián)系和區(qū)別了嗎?本文重點(diǎn)總結(jié)如下:

  • 將基本類(lèi)型變成包裝類(lèi)就是裝箱,把包裝類(lèi)變成基本類(lèi)型就是拆箱;
  • 裝箱和拆箱都分為手動(dòng)和自動(dòng)兩種情況;
  • 自動(dòng)裝箱和自動(dòng)拆箱都是在編譯期完成的(JDK 1.5之后出現(xiàn)自動(dòng)拆裝箱);
  • 裝箱和拆箱會(huì)影響執(zhí)行效率,且拆箱時(shí)可能發(fā)生 NullPointerException異常 ;

以上就是Java之如何正確地對(duì)包裝類(lèi)進(jìn)行裝箱與拆箱的詳細(xì)內(nèi)容,更多關(guān)于Java包裝類(lèi)裝箱拆箱的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring注解@EnableWebMvc使用的坑點(diǎn)及解析

    Spring注解@EnableWebMvc使用的坑點(diǎn)及解析

    這篇文章主要介紹了Spring注解@EnableWebMvc使用的坑點(diǎn)及解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java實(shí)現(xiàn)的DES加密算法詳解

    java實(shí)現(xiàn)的DES加密算法詳解

    這篇文章主要介紹了java實(shí)現(xiàn)的DES加密算法,結(jié)合實(shí)例形式詳細(xì)分析了java實(shí)現(xiàn)DES加密操作的原理、實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-06-06
  • Curator實(shí)現(xiàn)zookeeper的節(jié)點(diǎn)監(jiān)聽(tīng)詳解

    Curator實(shí)現(xiàn)zookeeper的節(jié)點(diǎn)監(jiān)聽(tīng)詳解

    這篇文章主要介紹了Curator實(shí)現(xiàn)zookeeper的節(jié)點(diǎn)監(jiān)聽(tīng)詳解,Curtor框架中一共有三個(gè)實(shí)現(xiàn)監(jiān)聽(tīng)的方式,一種是NodeCache監(jiān)聽(tīng)指定節(jié)點(diǎn),一種是pathChildrenCache監(jiān)聽(tīng)子節(jié)點(diǎn),一種是TreeCache可以監(jiān)控所有節(jié)點(diǎn) 相當(dāng)于以上兩種的合集,需要的朋友可以參考下
    2023-12-12
  • 解決mapper.xml中resultType映射類(lèi)型的問(wèn)題

    解決mapper.xml中resultType映射類(lèi)型的問(wèn)題

    這篇文章主要介紹了解決mapper.xml中resultType映射類(lèi)型的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • JavaWeb監(jiān)聽(tīng)器Listener實(shí)例解析

    JavaWeb監(jiān)聽(tīng)器Listener實(shí)例解析

    這篇文章主要為大家詳細(xì)介紹了JavaWeb監(jiān)聽(tīng)器Listener實(shí)例,針對(duì)監(jiān)聽(tīng)器進(jìn)行進(jìn)行細(xì)致分析,感興趣的小伙伴們可以參考一下
    2016-08-08
  • SpringBoot整合WebSocket實(shí)現(xiàn)實(shí)時(shí)通信功能

    SpringBoot整合WebSocket實(shí)現(xiàn)實(shí)時(shí)通信功能

    在當(dāng)今互聯(lián)網(wǎng)時(shí)代,實(shí)時(shí)通信已經(jīng)成為了許多應(yīng)用程序的基本需求,而WebSocket作為一種全雙工通信協(xié)議,為開(kāi)發(fā)者提供了一種簡(jiǎn)單、高效的實(shí)時(shí)通信解決方案,本文將介紹如何使用SpringBoot框架來(lái)實(shí)現(xiàn)WebSocket的集成,快速搭建實(shí)時(shí)通信功能,感興趣的朋友可以參考下
    2023-11-11
  • Java實(shí)現(xiàn)連連看算法

    Java實(shí)現(xiàn)連連看算法

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)連連看算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Java實(shí)現(xiàn)將Word轉(zhuǎn)換成Html的示例代碼

    Java實(shí)現(xiàn)將Word轉(zhuǎn)換成Html的示例代碼

    在業(yè)務(wù)中,常常會(huì)需要在瀏覽器中預(yù)覽Word文檔,或者需要將Word文檔轉(zhuǎn)成HTML文件保存,本文主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)Word轉(zhuǎn)換成Html的相關(guān)方法,希望對(duì)大家有所幫助
    2024-02-02
  • java 中modCount 詳解及源碼分析

    java 中modCount 詳解及源碼分析

    這篇文章主要介紹了java 中modCount 詳解及源碼分析的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 基于JDOM生成解析XML過(guò)程解析

    基于JDOM生成解析XML過(guò)程解析

    這篇文章主要介紹了基于JDOM生成解析XML過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評(píng)論