自動(dòng)裝箱拆箱

本題是一個(gè)自動(dòng)拆裝箱的考題(自動(dòng)拆裝箱JDK需在1.5上),下面的討論都不針對(duì)新開(kāi)辟對(duì)象的情況:

1、基本型和基本型封裝型進(jìn)行“==”運(yùn)算符的比較,基本型封裝型將會(huì)自動(dòng)拆箱變?yōu)榛拘秃笤龠M(jìn)行比較,因此Integer(0)會(huì)自動(dòng)拆箱為int類型再進(jìn)行比較,顯然返回true;

2、兩個(gè)Integer類型進(jìn)行“==”比較,如果其值在-128至127,那么返回true,否則返回false, 這跟Integer.valueOf()的緩沖對(duì)象有關(guān),這里不進(jìn)行贅述。

3、兩個(gè)基本型的封裝型進(jìn)行equals()比較,首先equals()會(huì)比較類型,如果類型相同,則繼續(xù)比較值,如果值也相同,返回true

4、基本型封裝類型調(diào)用equals(),但是參數(shù)是基本類型,這時(shí)候,先會(huì)進(jìn)行自動(dòng)裝箱,基本型轉(zhuǎn)換為其封裝類型,再進(jìn)行3中的比較。

int a=257;

Integer b=257;

Integer c=257;

Integer b2=57;

Integer c2=57;

System.out.println(a==b);

//System.out.println(a.equals(b));? 編譯出錯(cuò),基本型不能調(diào)用equals()

System.out.println(b.equals(257.0));

System.out.println(b==c);

System.out.println(b2==c2);

因此上面的代碼的結(jié)果因此為 true, false, false, true

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容