大战熟女丰满人妻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ù)文檔推薦 >>
主站蜘蛛池模板: 国产毛片一级 | 97影院午夜午夜伦不卡 | 中文国产成人精品久久一区 | 欧美一级视频免费观看 | 国内精品免费视频 | 91青青青国产在观免费影视 | 欧美视频在线观在线看 | 色爱区综合 | 国产成人精品永久免费视频 | www.奇米第四色| 欧美日本一本线在线观看 | 999成人国产精品 | 色综合九九 | 奇米影视777中文久久爱 | 国产一久久香蕉国产线看观看 | 综合色桃花久久亚洲 | 一区在线免费 | 国产亚洲欧美在在线人成 | 日韩精品一区二区三区中文字幕 | 日韩欧美国产高清在线观看 | 狠狠色噜噜狠狠狠狠狠色综合久久 | 99ri国产| 两性视频久久 | 香蕉综合网 | 成人午夜视频在线观看 | 国产免费久久精品丫丫 | 欧美精品中文字幕手机免费视频 | 综合久久99| 久久久久99精品成人片三人毛片 | 国产精品视频永久免费播放 | 午夜影院免费在线观看 | 最新午夜韩国理论片77网 | 三级五月天 | 中文字幕亚洲一区婷婷 | 精品国产免费福利片 | 久久亚洲精品中文字幕亚瑟 | 国产成年女一区二区三区 | 国产精品你懂的在线播放 | 女人洗澡一级毛片一级毛片 | 国产精品亚洲一区二区三区 | 中文字幕99|