电竞比分网-中国电竞赛事及体育赛事平台

分享

包裝類(lèi)簡(jiǎn)述

 新進(jìn)小設(shè)計(jì) 2021-04-24


一、前言(可忽略)

作者是一位自學(xué)JAVA的小白,通過(guò)網(wǎng)上視頻學(xué)習(xí)和自己對(duì)包裝類(lèi)的理解,現(xiàn)將自己對(duì)包裝類(lèi)的認(rèn)知描述如下:(希望能與各位同行好友共同分享自己所學(xué)的java知識(shí),同時(shí),也熱切期望各位同行前輩能夠幫助作者指出不足,讓小白的編程技術(shù)能更上一層樓,感謝各位同行大佬。

二、包裝類(lèi)的認(rèn)知

學(xué)過(guò)Java的帥鍋都知道8種基本數(shù)據(jù)類(lèi)型對(duì)應(yīng)8種包裝類(lèi)型(長(zhǎng)的也差不多,基本上都是首字母大寫(xiě),除了int和char,英文有點(diǎn)長(zhǎng)),8種包裝類(lèi)也屬于引用數(shù)據(jù)類(lèi)型,還有String也是(具體可看小白的String簡(jiǎn)介)。

為什么要提供8種包裝類(lèi)?

簡(jiǎn)單來(lái)說(shuō)就是因?yàn)?種基本類(lèi)型不夠用(小白理解),JAVA是完全面向?qū)ο箝_(kāi)發(fā),在開(kāi)發(fā)過(guò)程中,我們不可避免的使用到對(duì)象和多態(tài),面向?qū)ο箝_(kāi)發(fā),也造成了我們對(duì)需要使用對(duì)應(yīng)引用變量的基本數(shù)據(jù)類(lèi)型常量的煩惱。

? ?? 基本數(shù)據(jù)類(lèi)型 ? ?? ? ?? ? ?? ? ?? 包裝類(lèi)型

? ?? byte ? ?? ? ?? ? ?? ? ??? ?? ? ? java.lang.Byte(父類(lèi)Number)
? ?? short ? ?? ? ?? ? ?? ? ??? ?? ? ?java.lang.Short(父類(lèi)Number)
? ?? int ? ?? ? ?? ? ?? ? ?? ?? ???? java.lang.Integer(父類(lèi)Number)
? ?? long ? ???????? ? ?? ?? ?????? java.lang.Long(父類(lèi)Number)
? ?? float ? ?? ? ?? ? ?? ? ??? ?? ? ? java.lang.Float(父類(lèi)Number)
? ?? double ?????????? ??? ?? ????java.lang.Double(父類(lèi)Number)
? ?? boolean ?????????? ??? ?? ???java.lang.Boolean(父類(lèi)Object)
? ?? char ?????????? ??? ?? ??????java.lang.Character(父類(lèi)Object)

三、包裝類(lèi)的愛(ài)與恨

裝箱:基本數(shù)據(jù)類(lèi)型轉(zhuǎn)換成引用數(shù)據(jù)類(lèi)型
????手動(dòng)裝箱:

Integer i=new Integer(100);//照葫蘆畫(huà)瓢,i保存的是在堆內(nèi)存中的Integer對(duì)象的內(nèi)存地址,Integer對(duì)象指向整數(shù)常量地址池中的"100",

????自動(dòng)裝箱:

Integer i=100;//照葫蘆畫(huà)瓢

拆箱:引用數(shù)據(jù)類(lèi)型轉(zhuǎn)換成基本數(shù)據(jù)類(lèi)型

????手動(dòng)拆箱:

int j=i.intValue();//照葫蘆畫(huà)瓢

????手動(dòng)拆箱的方法:

       * byte byteValue() 以byte形式返回指定的數(shù)值
       * abstract double doubleValue 以double形式返回指定的數(shù)值
       * abstract float floatValue()以float形式返回指定的數(shù)值
       * abstract int  intValue()以int形式返回指定的數(shù)值
       * abstract long longValue()以long形式返回指定的數(shù)值
       * short shortValue以short形式返回指定的數(shù)值

????自動(dòng)拆箱:

int j=i;//照葫蘆畫(huà)瓢

重點(diǎn):

long Y=1000;
Long A=1000L;
System.out.println(Y==A);//引用數(shù)據(jù)類(lèi)型與基本數(shù)據(jù)類(lèi)型比較,自動(dòng)拆箱,結(jié)果為true
Integer I=1000;
Float F=1000.0;
System.out.println(I==F);//提示出錯(cuò),數(shù)值雖相同,但不同包裝類(lèi)型不可直接比較)
Integer X=100;
Integer C=100
System.out.println(X==C);//true,兩對(duì)象的內(nèi)存地址相同

```c
Integer M=100;
System.out.println(M+1);//true,包裝類(lèi)型的變量在進(jìn)行四則運(yùn)算時(shí)會(huì)自動(dòng)拆箱

注意:為了提高程序的執(zhí)行效率,Java將所有-128~127之間所有的包裝對(duì)象都提前創(chuàng)建到了方法區(qū)的“整數(shù)型常量池中”,所以當(dāng)使用"=="比較時(shí),由于是使用"="直接賦內(nèi)存地址(整數(shù)型常量池中的),所以?xún)勺兞績(jī)?nèi)存地址相同,結(jié)果為true

Integer H=100; 
java.lang.Integer D=new java.lang.Integer(100);
System.out.println(H==D);//false D和H存放的內(nèi)存地址不一樣
        java.lang.Integer x=1000;
        java.lang.Integer b=0;
        java.lang.Integer c=1000;
        java.lang.Long N=1000L;
        System.out.println(x.equals(c+b));//true, 先進(jìn)行b和C的自動(dòng)拆箱,求出b+c并自動(dòng)裝箱,再調(diào)用euqals方法進(jìn)行對(duì)象引用的值比較。
        System.out.println(N.equals(c+b));//false
 java.lang.Integer K=1000;
 java.lang.Integer Q=0;
 java.lang.Long A=1000L;
 System.out.println(A==(K+Q));首先A進(jìn)行自動(dòng)拆箱,K+Q由于進(jìn)行四則運(yùn)算自動(dòng)拆箱,比較對(duì)象的值,由于JAVA在對(duì)類(lèi)型轉(zhuǎn)換時(shí)會(huì)自動(dòng)向上轉(zhuǎn),int->long

注意:equals在比較不同包裝類(lèi)型時(shí),由于類(lèi)型不同會(huì)返回false

通過(guò)訪問(wèn)包裝類(lèi)的常量,來(lái)獲取最大值和最小值(獲取類(lèi)型取值范圍)

//比如int的取值范圍
 java.lang.Integer x=1000;
 System.out.println(x.MIN_VALUE);//-2147483648
 System.out.println(x.MAX_VALUE);//2147483647

四、包裝類(lèi)的異常

        Long l=new Long("Chinese");
        long I=l;
        System.out.println(I);//異常報(bào)錯(cuò):NumberFarmatException
        //編譯沒(méi)錯(cuò),但運(yùn)行的時(shí)候會(huì)出現(xiàn)異常,只能是數(shù)字包裝。
        Long X=new Long("123");
        long Y=X;
        System.out.println(Y);//123

五、包裝類(lèi)的方法

static int parseInt(String s)

作用:靜態(tài)方法,傳參String,返回int,類(lèi)名調(diào)用

           int RetValue=java.lang.Integer.parseInt("123");//String->int,照葫蘆畫(huà)瓢
           System.out.println(RetValue);//123

static String toBinaryString(int)

作用:靜態(tài),將int以十進(jìn)制轉(zhuǎn)化成二進(jìn)制

        System.out.println(java.lang.Integer.toBinaryString(10));//1010

static String toHexString(int x)

作用:靜態(tài),將int以十進(jìn)制轉(zhuǎn)化成十六進(jìn)制

        System.out.println(java.lang.Integer.toHexString(17));//11

static String toOctalString(int)

作用:靜態(tài),將int以十進(jìn)制轉(zhuǎn)換成八進(jìn)制

        System.out.println(java.lang.Integer.toOctalString(10));//12

static Integer valueOf(int i)

作用:靜態(tài),類(lèi)型互轉(zhuǎn),將i以int轉(zhuǎn)換成Integer

        System.out.println(java.lang.Integer.valueOf(100));//100

static Integer valueOf(String x)

作用:靜態(tài),類(lèi)型互轉(zhuǎn),將x以String轉(zhuǎn)換成Integer

        System.out.println(java.lang.Integer.valueOf("1000"));//1000,String只能以數(shù)字形式輸入,否則報(bào)NumberFormatException錯(cuò)誤

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多