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

Java面向?qū)ο笾b類的用途與實際使用

 更新時間:2022年04月06日 17:08:04   作者:誰是誰的小確幸  
所謂包裝類,就是能夠直接將簡單類型的變量表示為一個類,在執(zhí)行變量類型的相互轉(zhuǎn)換時,我們會大量使用這些包裝類,本文我們來深入探索一下Java包裝類的相關(guān)內(nèi)容,需要的朋友可以參考下

一、什么是包裝類

包裝類(Wrapper Class): Java是一個面向?qū)ο蟮木幊陶Z言,但是Java中的八種基本數(shù)據(jù)類型卻是不面向?qū)ο蟮?,為了使用方便和解決這個不足,在設(shè)計類時為每個基本數(shù)據(jù)類型設(shè)計了一個對應(yīng)的類進(jìn)行代表,這樣八種基本數(shù)據(jù)類型對應(yīng)的類統(tǒng)稱為包裝類(Wrapper Class),包裝類均位于java.lang包。

二、包裝類的用途

為了使用方便Java中將8中基本數(shù)據(jù)類型進(jìn)行了封裝:除了Integer和Character類以后,其它六個類的類名和基本數(shù)據(jù)類型一直,只是類名的第一個字母大寫即可。

boolean —> Boolean
char —> Character
byte—> Byte
short—> Short
long—> Long
int —> Integer
float—> Float
double—> Double

對于包裝類說,用途主要包含兩種:

a、作為 和基本數(shù)據(jù)類型對應(yīng)的類 類型存在,方便涉及到對象的操作。

b、包含每種基本數(shù)據(jù)類型的相關(guān)屬性如最大值、最小值等,以及相關(guān)的操作方法。

三、包裝類的實際使用(以int和integer為例)

1.int和integer類之間的轉(zhuǎn)換

在實際轉(zhuǎn)換時,使用Integer類的構(gòu)造方法和Integer類內(nèi)部的intValue方法實現(xiàn)這些類型之間的相互轉(zhuǎn)換:

        //
        int n=5;
        Integer n1=new Integer(n);
        System.out.println("int類型轉(zhuǎn)換為integer類:"+n1);
        //
        Integer i=new Integer(50);
        int i1 = i.intValue();
        System.out.println("integer類轉(zhuǎn)換為int類型:"+i1);

2、Integer類內(nèi)部的常用方法

Integer類的主要方法有:parseInt方法和toString方法。

        //parseInt方法: 數(shù)字字符串類型轉(zhuǎn)成int類型
        String ss="123";
        int ii = Integer.parseInt(ss);
        System.out.println("字符類型轉(zhuǎn)成整型:"+ii);
        //toString方法:int類型轉(zhuǎn)成數(shù)字字符串類型
        int ii2=123;
        String ss2 = Integer.toString(ii2);
        System.out.println("int類型轉(zhuǎn)成數(shù)字字符串類型:"+ss);

JDK自從1.5版本以后,就引入了自動拆裝箱的語法,也就是在進(jìn)行基本數(shù)據(jù)類型和對應(yīng)的包裝類轉(zhuǎn)換時,系統(tǒng)將自動進(jìn)行,這將大大方便程序員的代碼書寫。

自動裝箱:將 基本數(shù)據(jù)類型 封裝為對象類型,來符合java的面向?qū)ο蟮乃枷搿?/p>

自動拆箱:將對象重新轉(zhuǎn)化為基本數(shù)據(jù)類型。

        //5是基本數(shù)據(jù)類型,通過自動裝箱變成對象類型。
        //編譯器執(zhí)行了Integer iii = Integer.valueOf(5)
        Integer iii=5;
        //自動拆箱,實際上執(zhí)行了 int iii2 = iii.intValue()
        int iii2=iii;
        System.out.println(iii2);

valueOf()源碼分析:

public static Integer valueOf(int i) {
     assert IntegerCache.high>= 127;
     if (i >= IntegerCache.low&& i <= IntegerCache.high)
     return IntegerCache.cache[i+ (-IntegerCache.low)];
     return new Integer(i); 
}

說明:Integer iii=5;相當(dāng)于編譯器執(zhí)行了Integer iii = Integer.valueOf(5)操作。這個方法就是返回一個 Integer 對象,只是在返回之前,看作了一個判斷,判斷當(dāng)前 i 的值是否在 [-128,127] 區(qū)別,且 IntegerCache 中是否存在此對象,如果存在,則直接返回引用,否則,創(chuàng)建一個新的對象。

3.包裝類的緩存值

各個包裝類緩存值范圍 :

boolean:true和false 
byte:-128~127 
char:0~127 
short:-128~127 
int:-128~127 
long:-128~127 

特別注意:對于float和double沒有緩存。

在對上述值進(jìn)行裝箱的時候(如:Character c1=127;or Integer i= Integer.valueOf(1); 這個不行哦:Integer i2=new Integer(1);因為這是新建了一個對象出來。),并不是創(chuàng)建一個新對象而是使用緩存中的對象,如果超出范圍則需要新建立對象。

四、常見的面試題

1.Java中Int與Integer的區(qū)別?

一、int 是基本類型,直接存數(shù)值;而integer引用數(shù)據(jù)類型。

二、Int的聲明不需要實例化,且變量聲明后的初始值為0;Integer的是一個類,初始值為null,需要進(jìn)行實例化,才能對變量數(shù)據(jù)進(jìn)行處理。

三、Integer類是int的包裝類,實際開發(fā)中Integer被看成一個對象,可以進(jìn)行數(shù)據(jù)轉(zhuǎn)換等操作。

2.判斷下面程序片段輸出的結(jié)果:

        Integer num1 = 200;   
        Integer num2 = 200;           
        System.out.println("num1==num2: "+(num1==num2));                    
        Integer num3 = 100;   
        Integer num4 = 100;   
        System.out.println("num3==num4: "+(num3==num4)); 

輸出結(jié)果:num1num2:false 和num3num4:true

說明:

首先要明確equal方法與的區(qū)別:

equals() 比較的是兩個對象的值(內(nèi)容)是否相同。

"" 比較的是兩個對象的引用(內(nèi)存地址)是否相同,也用來比較兩個基本數(shù)據(jù)類型的變量值是否相等。

java定義:在自動裝箱時對于值從–128到127之間的值,它們被裝箱為Integer對象后,會存在內(nèi)存中被重用,始終只存在一個對象而如果超過了從–128到127之間的值,被裝箱后的Integer對象并不會被重用,即相當(dāng)于每次裝箱時都新建一個 Integer對象;

總結(jié)

到此這篇關(guān)于Java面向?qū)ο笾b類的文章就介紹到這了,更多相關(guān)Java包裝類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 全面詳解java代碼重構(gòu)與設(shè)計模式

    全面詳解java代碼重構(gòu)與設(shè)計模式

    這篇文章主要為大家介紹了全面詳解java代碼重構(gòu)與設(shè)計模式的全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Spring集成Swagger常見錯誤及解決辦法

    Spring集成Swagger常見錯誤及解決辦法

    這篇文章主要介紹了Spring集成Swagger常見錯誤及解決辦法,幫助大家更好的理解和學(xué)習(xí)使用Spring,感興趣的朋友可以了解下
    2021-05-05
  • JAVA驗證身份證號碼有效性的實例代碼

    JAVA驗證身份證號碼有效性的實例代碼

    很多項目業(yè)務(wù)都會設(shè)計到人員信息,那么身份證號就是必不可少的校驗項,下面這篇文章主要給大家介紹了關(guān)于JAVA驗證身份證號碼有效性的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Java多線程父線程向子線程傳值問題及解決

    Java多線程父線程向子線程傳值問題及解決

    文章總結(jié)了5種解決父子之間數(shù)據(jù)傳遞困擾的解決方案,包括ThreadLocal+TaskDecorator、UserUtils、CustomTaskDecorator、ExecutorConfig、RequestContextHolder+TaskDecorator、MDC+TaskDecorator和InheritableThreadLocal
    2025-02-02
  • 利用Jackson解決Json序列化和反序列化問題

    利用Jackson解決Json序列化和反序列化問題

    Jackson是一個用于處理Json數(shù)據(jù)的Java庫,它提供了一系列功能,包括Json序列化和反序列化,所以本文就來講講如何利用利用Jackson解決Json序列化和反序列化的問題吧
    2023-05-05
  • JAVA文件讀取常用工具類(8種)

    JAVA文件讀取常用工具類(8種)

    JAVA操作文件在經(jīng)常會使用到,本文匯總了部分JAVA操作文件的讀取常用工具類,主要介紹了8種方法,具有一定的參考價值,感興趣的可以了解一下
    2021-08-08
  • spring boot aop 記錄方法執(zhí)行時間代碼示例

    spring boot aop 記錄方法執(zhí)行時間代碼示例

    這篇文章主要介紹了spring boot aop 記錄方法執(zhí)行時間代碼示例,分享了相關(guān)代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • java比較兩個json文件的差異及說明

    java比較兩個json文件的差異及說明

    這篇文章主要介紹了java比較兩個json文件的差異及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 詳解Spring Boot 部署jar和war的區(qū)別

    詳解Spring Boot 部署jar和war的區(qū)別

    本篇文章主要介紹了詳解Spring Boot 部署jar和war的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • SpringCloud gateway如何修改返回數(shù)據(jù)

    SpringCloud gateway如何修改返回數(shù)據(jù)

    這篇文章主要介紹了SpringCloud gateway如何修改返回數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論