面試精選7-一道關(guān)于Integer的面試題
2022-09-24 21:54 作者:架構(gòu)風(fēng)清揚(yáng)-趣學(xué)旅程 | 我要投稿
1,來,先來一道考題,你看做對(duì)了嗎?
大家可以猜測(cè)下結(jié)果,然后將程序運(yùn)行起來,驗(yàn)證自己的答案是否正確
這道題主要考查大家對(duì)Integer實(shí)現(xiàn)原理的掌握程度
下面,我給大家對(duì)這里的關(guān)鍵原理做解讀,相信理解之后,你心中自然有答案了
答案揭曉
分情況來比較
都定義為Integer的比較:
new:一旦new,就是開辟一塊新內(nèi)存,結(jié)果肯定是false
不new:
看范圍
Integer做了緩存,-128至127,當(dāng)你取值在這個(gè)范圍的時(shí)候,會(huì)采用緩存的對(duì)象,所以會(huì)相等
當(dāng)不在這個(gè)范圍,內(nèi)部創(chuàng)建新的對(duì)象,此時(shí)不相等
Integer和int的比較:
實(shí)際比較的是數(shù)值,Integer會(huì)做拆箱的動(dòng)作,來跟基本數(shù)據(jù)類型做比較
此時(shí)跟是否在緩存范圍內(nèi)或是否new都沒關(guān)系
源碼分析:
當(dāng)我們寫Integer i = 126,實(shí)際上做了自動(dòng)裝箱:Integer i = Integer.valueOf(126);
分析這段源碼
標(biāo)簽: