為什么 Java 中“1000==1000”為false,而”100==100“為true?
閱讀本文大概需要 2 分鐘。
來自:?碼農(nóng)網(wǎng)
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);?//
????}
推薦閱讀:
騷操作:不重啟 JVM,如何替換掉已經(jīng)加載的類?
微信掃描二維碼,關(guān)注我的公眾號
朕已閱?
評論
圖片
表情

