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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java核心基礎(chǔ),java包裝類數(shù)據(jù)

Java核心基礎(chǔ),java包裝類數(shù)據(jù)

更新時(shí)間:2020-05-08 16:43:33 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2334次

    包裝類

    Java中每一種基本類型都會(huì)對(duì)應(yīng)一個(gè)唯一的包裝類,基本類型與其包裝類都可以通過包裝類中的靜態(tài)或者成員方法進(jìn)行轉(zhuǎn)換。每種基本類型及其包裝類的對(duì)應(yīng)關(guān)系如下,值得注意的是,所有的包裝類都是final修飾的,也就是它們都是無法被繼承和重寫的。

Java核心基礎(chǔ),java包裝類數(shù)據(jù)

    包裝類與基本類型的轉(zhuǎn)換

    從源代碼的角度來看,基礎(chǔ)類型和包裝類型都可以通過賦值語法賦值給對(duì)立的變量類型,如下面的代碼所示。

    Integera=1;

    inta=newInteger(1);

    這種語法是可以通過編譯的。但是,Java作為一種強(qiáng)類型的語言,對(duì)象直接賦值給引用類型變量,而基礎(chǔ)數(shù)據(jù)只能賦值給基本類型變量,這個(gè)是毫無異議的。那么基本類型和包裝類型為什么可以直接相互賦值呢?這其實(shí)是Java中的一種“語法糖”。“語法糖”是指計(jì)算機(jī)語言中添加的某種語法,這種語法對(duì)語言的功能并沒有影響,但是更方便程序員使用。通常來說使用語法糖能夠增加程序的可讀性,從而減少程序代碼出錯(cuò)的機(jī)會(huì)(來自百度百科)。換句話說,這其實(shí)是一種障眼法,那么實(shí)際上是怎么樣的呢?下面是Integera=1;語句編譯的字節(jié)碼。

    0:iconst_1

    1:invokestatic#2

    4:astore_1

    首先,生成一個(gè)常量1,然后調(diào)用Integer.valueOf(int)方法返回Integer對(duì)象,最后將對(duì)象的地址(引用)賦值給變量a。Integera=1;其實(shí)相當(dāng)于Integera=Integer.valueOf(1);。

    其他的包裝類都是類似的,下表是所有包裝類中的類型轉(zhuǎn)換方法。

Java核心基礎(chǔ),java包裝類數(shù)據(jù)

    “神奇”的包裝類

    如果不了解包裝類中的一些機(jī)制,我們有時(shí)會(huì)碰到一些莫名其妙的問題,丈二和尚——摸不著頭腦。

    “莫名其妙”的NullPointException

    在筆者開發(fā)經(jīng)歷中,碰到過不少因?yàn)檎?qǐng)求參數(shù)或者接口定義字段設(shè)置為int(或者其他基本類型)而導(dǎo)致NullPointException。代碼大致地運(yùn)行步驟如下所示,當(dāng)然不會(huì)跟這個(gè)完全一樣。

    Integera=null;

    ...

    intb=a;//拋出NullPointException

    上面的代碼可以編譯通過,但是會(huì)拋出空指針異常(NullPointException)。前面已經(jīng)說過了,intb=a實(shí)際上是intb=a.intValue(),由于a的引用值為null,在空對(duì)象上調(diào)用方法就會(huì)拋出NullPointException。

    兩個(gè)包裝類引用相等性

    在Java中,“==”符號(hào)判斷的內(nèi)存地址所對(duì)應(yīng)的值得相等性,具體來說,基本類型判斷值是否相等,引用類型判斷其指向的地址是否相等。看看下面的代碼,兩種類似的代碼邏輯,但是得到截然不用的結(jié)果。

Java核心基礎(chǔ),java包裝類數(shù)據(jù)

    這個(gè)必須從源代碼中才能找到答案。Integer類中的valueOf()方法的源代碼如下:

Java核心基礎(chǔ),java包裝類數(shù)據(jù)

    由于1屬于[-128,127]集合范圍內(nèi),所以valueOf()每次都會(huì)取出同一個(gè)Integer對(duì)象,故第一個(gè)“==”判斷結(jié)果為true;而222不屬于[-128,127]集合范圍內(nèi),所以valueOf()每次都會(huì)創(chuàng)建一個(gè)新的Integer對(duì)象,由于兩個(gè)新創(chuàng)建的對(duì)象的地址不一樣,故第一個(gè)“==”判斷結(jié)果為false。

 以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java核心基礎(chǔ),java包裝類數(shù)據(jù)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日日摸夜夜添夜夜添欧美毛片 | 久久婷婷人人澡人人爱91 | 狠狠色噜噜狠狠狠8888米奇 | 中文字幕在线视频在线看 | 日本在线观看中文字幕 | 成人国产在线视频 | 激情久久久久久久久久久 | 欧美色综合高清免费 | 欧美一级a毛片人人dvd | 中文字幕天堂久久精品 | 中文字幕一区二区三区免费视频 | 欧美激情在线 | 91国色| 久久国产精品视频 | 久久国产精品男女热播 | 色综合伊人色综合网亚洲欧洲 | 精品乱码一区二区三区在线 | 黑人边吃奶边扎下面激情视频 | 久久综合久久综合久久综合 | 在线视频综合网 | 精品免费视在线观看 | 国内精品自在自线在免费 | 成人a毛片免费全部播放 | 能免费看黄的网站 | 国产老熟 | 手机在线国产精品 | 91精品久久久 | 色婷婷六月桃花综合影院 | 在线不卡日本 | 四虎国产精品永久地址48 | 亚洲精品资源在线 | 午夜狠狠操 | 国产精品国产三级国产普通话 | 日韩视频欧美视频 | 韩国 欧美 日产 国产精品 | 亚洲一区二区三区在线网站 | 狠狠地操| 色综合久久综精品 | 国内外一级毛片 | 色五月天天 | 欧美日韩在大午夜爽爽影院 |