為什么 Java 中“1000==1000”為false,而”100==100“為true?
點(diǎn)擊上方“碼農(nóng)突圍”,馬上關(guān)注
這里是碼農(nóng)充電第一站,回復(fù)“666”,獲取一份專屬大禮包
真愛,請?jiān)O(shè)置“星標(biāo)”或點(diǎn)個(gè)“在看”

英文原文:https://dzone.com/articles/why-1000-1000-returns-false-but-100-100-returns-tr
Integer?a?=?1000,?b?=?1000;??
????System.out.println(a?==?b);//1
????Integer?c?=?100,?d?=?100;??
????System.out.println(c?==?d);//2
false
true
Integer?c?=?100;
Integer?i?=?Integer.valueOf(100);
public?static?Integer?valueOf(int?i)?{
??????if?(i?>=?IntegerCache.low?&&?i
??????????return?IntegerCache.cache[i?+?(-IntegerCache.low)];
??????return?new?Integer(i);
????}
Integer?c?=?100,?d?=?100;
System.out.println(c?==?d);
public?static?void?main(String[]?args)?throws?NoSuchFieldException,?IllegalAccessException?{
??????Class?cache?=?Integer.class.getDeclaredClasses()[0];?//1
??????Field?myCache?=?cache.getDeclaredField("cache");?//2
??????myCache.setAccessible(true);//3
??????Integer[]?newCache?=?(Integer[])?myCache.get(cache);?//4
??????newCache[132]?=?newCache[133];?//5
??????int?a?=?2;
??????int?b?=?a?+?a;
??????System.out.printf("%d?+?%d?=?%d",?a,?a,?b);?//
????}
最近熱文
? ?太優(yōu)秀了!26歲當(dāng)上985博導(dǎo),這才是乘風(fēng)破浪的姐姐! ???fastjson的作者,在阿里內(nèi)網(wǎng)被噴,這到底是怎么一回事? ???為什么有些大公司技術(shù)弱爆了? ???微軟最新聲明:若斷供中國Windows,概不負(fù)責(zé)! 最近整理了一份大廠算法刷題指南,包括一些刷題技巧,在知乎上已經(jīng)有上萬贊。同時(shí)還整理了一份6000頁面試筆記。關(guān)注下面公眾號,在公眾號內(nèi)回復(fù)「刷題」,即可免費(fèi)獲取!回復(fù)「加群」,可以邀請你加入讀者群!
明天見(??ω??)??
評論
圖片
表情
