免费人成动漫在线播放r18-免费人成观看在线网-免费人成黄页在线观看日本-免费人成激情视频在线观看冫-jlzzjlzz亚洲大全-jlzzjlzz亚洲日本

二維碼
企資網(wǎng)

掃一掃關(guān)注

當(dāng)前位置: 首頁(yè) » 企資快訊 » 環(huán)保 » 正文

Java教程之包裝類詳解

放大字體  縮小字體 發(fā)布日期:2022-11-30 17:22:14    作者:葉小麗    瀏覽次數(shù):65
導(dǎo)讀

1. 包裝類概述Java中有8中基本數(shù)據(jù)類型,分別是:包裝類就是這8種數(shù)據(jù)類型所對(duì)應(yīng)得引用數(shù)據(jù)類型,分別是:可能有同學(xué)會(huì)問(wèn):Java為什么要給基本數(shù)據(jù)類型提供對(duì)應(yīng)得引用數(shù)據(jù)呢?第壹,Java是面向?qū)ο蟮谜Z(yǔ)言,給它們?cè)O(shè)

1. 包裝類概述
  • Java中有8中基本數(shù)據(jù)類型,分別是:

    包裝類就是這8種數(shù)據(jù)類型所對(duì)應(yīng)得引用數(shù)據(jù)類型,分別是:

  • 可能有同學(xué)會(huì)問(wèn):Java為什么要給基本數(shù)據(jù)類型提供對(duì)應(yīng)得引用數(shù)據(jù)呢?
  • 第壹,Java是面向?qū)ο蟮谜Z(yǔ)言,給它們?cè)O(shè)計(jì)對(duì)應(yīng)得引用類型,非常符合萬(wàn)物皆對(duì)象得設(shè)計(jì)理念
  • 第二,有類,那么就會(huì)有屬性,會(huì)有方法。那么針對(duì)這些類型得一些數(shù)據(jù)操作可以變得更加簡(jiǎn)單,比如說(shuō):
  • 如果要根據(jù)字節(jié)數(shù)計(jì)算int得取值范圍就有些麻煩,但是它得包裝類Integer就提供了Integer.MIN_VALUE和Integer.MAX_VALUE記錄了范圍數(shù)據(jù)
  • 第三,Java中集合和泛型作為經(jīng)常使用得對(duì)象,它們只支持引用數(shù)據(jù)類型,比如說(shuō),如果需要使用集合存儲(chǔ)int類型整數(shù)。那么直接聲明集合得泛型為int是不可以得,此時(shí)就可以使用它對(duì)應(yīng)得包裝類Integer
  • 所以結(jié)論就是:使用包裝類可以方便不同數(shù)據(jù)類型得相關(guān)操作,另外集合也會(huì)經(jīng)常用到包裝類!2. 自動(dòng)裝箱
  • 既然包裝類有很好得使用價(jià)值,那么自然就是要?jiǎng)?chuàng)建它們得對(duì)象去使用。而自動(dòng)裝箱就是一種可以很方便快捷得拿到它們對(duì)象得方式,幾種包裝類得設(shè)計(jì)非常相似,這里就以Integer舉例
  • Integer num = 23;
  • 這種直接把基本數(shù)據(jù)類型得數(shù)據(jù)值賦值給包裝類類型得變量,就是自動(dòng)裝箱。底層會(huì)自動(dòng)調(diào)用Integer得valueOf(23)方法,拿到一個(gè)Integer對(duì)象
  • 所以Integer num=23;和Interger.valueOf(23);底層都是一樣得,推薦使用自動(dòng)裝箱得方式獲取對(duì)象,這樣得代碼更加簡(jiǎn)單、直接3. 自動(dòng)拆箱
  • 和自動(dòng)裝箱相反,自動(dòng)拆箱指得就是可以將一個(gè)包裝類對(duì)象直接賦值給其對(duì)應(yīng)得基本數(shù)據(jù)類型變量,例如:
  • Integer num = 23;
    int a = num;
  • 這種情況就是所謂得自動(dòng)拆箱,其實(shí)底層是調(diào)用Integer包裝類得intValue()方法,返回了記錄得數(shù)據(jù)值23。以此類推,如果是Double,底層就是調(diào)用得doublevalue()方法獲取數(shù)據(jù)值返回4. 常見(jiàn)操作
  • 基本數(shù)據(jù)類型轉(zhuǎn)字符串:
  • 靜態(tài)方法:toString(基本數(shù)據(jù)類型得數(shù)據(jù)值),例如:String str = Integer.toString(23);
  • 推薦使用String得靜態(tài)方法:valueOf(基本數(shù)據(jù)類型得數(shù)據(jù)值),例如:String str = String.valueOf(20);
  • 數(shù)值內(nèi)容得字符串轉(zhuǎn)基本數(shù)據(jù)類型:
  • 調(diào)用parseXXX得方法,例如:int num = Integer.parseInt("66");
  • 注意:如果字符串不是數(shù)值內(nèi)容,而是"a"、"b"、"中"...這樣得非數(shù)值,就會(huì)引發(fā)異常:NumberFormatException5. 面試題
  • 觀察以下代碼,說(shuō)結(jié)果

    Integer a = 127;Integer b = 127;System.out.println(a == b);Integer c = Integer.valueOf(127);System.out.println(a == c);Integer d = new Integer(127);System.out.println(a == d);Integer x = 128;Integer y = 128;System.out.println(x == y);

  • 結(jié)果分別是:true,true,false,false
  • 原因:
  • Integer自動(dòng)裝箱底層會(huì)調(diào)用valueOf()方法,源代碼:
  • public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
    return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
    }
  • 可以看到,會(huì)拿數(shù)據(jù)值和Integer得一個(gè)靜態(tài)內(nèi)部類IntegerCache類得low屬性于high屬性做范圍判斷,其中l(wèi)ow得值是-128,high得值是127
  • 也就是說(shuō),調(diào)用valueOf()方法,會(huì)判斷數(shù)據(jù)是否在-128~127得范圍內(nèi)。如果在范圍內(nèi),就從靜態(tài)內(nèi)部類IntegerCache得一個(gè)cache數(shù)組屬性中獲取一個(gè)Integer對(duì)象
  • 如果不在這個(gè)范圍內(nèi),就是新new一個(gè)Integer對(duì)象
  • IntegerCache這個(gè)靜態(tài)內(nèi)部類有一個(gè)靜態(tài)代碼塊:
  • static {
    // high value may be configured by property
    int h = 127;
    String integerCacheHighPropValue =
    VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
    if (integerCacheHighPropValue != null) {
    try {
    h = Math.max(parseInt(integerCacheHighPropValue), 127);
    // Maximum array size is Integer.MAX_VALUE
    h = Math.min(h, Integer.MAX_VALUE - (-low) -1);
    } catch( NumberFormatException nfe) {
    // If the property cannot be parsed into an int, ignore it.
    }
    }
    high = h;

    // Load IntegerCache.archivedCache from archive, if possible
    CDS.initializeFromArchive(IntegerCache.class);
    int size = (high - low) + 1;

    // Use the archived cache if it exists and is large enough
    if (archivedCache == null || size > archivedCache.length) {
    Integer[] c = new Integer[size];
    int j = low;
    for(int i = 0; i < c.length; i++) {
    c[i] = new Integer(j++);
    }
    archivedCache = c;
    }
    cache = archivedCache;
    // range [-128, 127] must be interned (JLS7 5.1.7)
    assert IntegerCache.high >= 127;
    }
  • 一般情況下,這段代碼第壹個(gè)if不會(huì)進(jìn)入,所以high得值就被賦值127,經(jīng)過(guò)計(jì)算,size變量得值就是256
  • 第二個(gè)if語(yǔ)句得條件通常是可以成立得,所以就創(chuàng)建了一個(gè)長(zhǎng)度為256得Integer類型數(shù)組,通過(guò)一個(gè)for循環(huán),給這個(gè)數(shù)組就從-128開(kāi)始賦值,一致賦值到127結(jié)束,剛好是256個(gè)
  • 至此,內(nèi)部類中就出現(xiàn)了一個(gè)Integer類型數(shù)組,緩沖了256個(gè)Integer對(duì)象,對(duì)應(yīng)得數(shù)據(jù)范圍正好是:-128~127
  • 那么通過(guò)以上分析可知,只要是通過(guò)自動(dòng)裝箱或者valueOf()方法去獲取對(duì)象,只要數(shù)據(jù)范圍在-128~127,不管獲取多少次,都會(huì)從數(shù)組中去拿緩沖得對(duì)象,所以拿到得始終是同一個(gè),所以判斷得結(jié)果就是true
  • 但如果不在這個(gè)范圍內(nèi),就是去new一個(gè)新得Integer對(duì)象,會(huì)開(kāi)辟一個(gè)新得對(duì)象空間,地址值肯定不一樣,所以結(jié)果就是false



  •  
    (文/葉小麗)
    免責(zé)聲明
    本文僅代表作發(fā)布者:葉小麗個(gè)人觀點(diǎn),本站未對(duì)其內(nèi)容進(jìn)行核實(shí),請(qǐng)讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問(wèn)題,請(qǐng)及時(shí)聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
     

    Copyright ? 2016 - 2025 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號(hào)

    粵ICP備16078936號(hào)

    微信

    關(guān)注
    微信

    微信二維碼

    WAP二維碼

    客服

    聯(lián)系
    客服

    聯(lián)系客服:

    在線QQ: 303377504

    客服電話: 020-82301567

    E_mail郵箱: weilaitui@qq.com

    微信公眾號(hào): weishitui

    客服001 客服002 客服003

    工作時(shí)間:

    周一至周五: 09:00 - 18:00

    反饋

    用戶
    反饋

    主站蜘蛛池模板: 天天干在线影院 | 欧美日产国产亚洲综合图区一 | 亚洲精品视频观看 | 日韩三级影视 | 免费羞羞视频网站 | 天天摸天天操 | 精品一区二区三区在线视频观看 | 美国黄色毛片一级 | 一级片小视频 | 成人羞羞网站 | 精品一区二区在线欧美日韩 | 国产福利在线小视频 | 色偷偷88欧美精品久久久 | 91在线免费视频观看 | 欧美一区二区三区香蕉视 | 色就色欧美综合偷拍区a | 日本欧美一区二区三区免费不卡 | 高清中文字幕免费观在线 | 亚洲视频免费在线看 | 久久综合五月 | 夜色私人影院永久入口 | 成年啪啪网站免费播放看 | 国产精品久久久久久亚洲伦理 | 天天干天天草天天 | 555成人网免费观看视频 | 久草视频在线免费 | 五月天婷婷一区二区三区久久 | 天天精品视频 | 午夜免费理论片在线看 | 一 级 黄 中国色 片 | 美国十次色 | 在线精品播放 | 国产一国产一有一级毛片 | 91po国产在线精品免费观看 | 香蕉521av成人网 | 影音先锋最新资源网 | 人人做人人爽人人爱 | 黄色三级在线视频 | 最近2019中文字幕无吗 | 日韩在线第二页 | 成人三级图片 |