亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

淺談為什么Java中1000==1000為false而100==100為true

瀏覽:3日期:2022-08-25 10:17:25

這是一個挺有意思的討論話題。

如果你運行下面的代碼

Integer a = 1000, b = 1000; System.out.println(a == b);//1 Integer c = 100, d = 100; System.out.println(c == d);//2

你會得到

falsetrue

基本知識:我們知道,如果兩個引用指向同一個對象,用==表示它們是相等的。如果兩個引用指向不同的對象,用==表示它們是不相等的,即使它們的內容相同。

因此,后面一條語句也應該是false 。

這就是它有趣的地方了。如果你看去看 Integer.java 類,你會發現有一個內部私有類,IntegerCache.java,它緩存了從-128到127之間的所有的整數對象。

所以事情就成了,所有的小整數在內部緩存,然后當我們聲明類似——

Integer c = 100;

的時候,它實際上在內部做的是

Integer i = Integer.valueOf(100);

現在,如果我們去看valueOf()方法,我們可以看到

public static Integer valueOf(int i) { if (i >= IntegerCache.low && i return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }

如果值的范圍在-128到127之間,它就從高速緩存返回實例。

所以…

Integer c = 100, d = 100;

指向了同一個對象。

這就是為什么我們寫

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

我們可以得到true。

現在你可能會問,為什么這里需要緩存?

合乎邏輯的理由是,在此范圍內的“小”整數使用率比大整數要高,因此,使用相同的底層對象是有價值的,可以減少潛在的內存占用。

然而,通過反射API你會誤用此功能。

運行下面的代碼,享受它的魅力吧

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); // }

英文原文:Why 1000 == 1000 Returns False, but 100 == 100 Returns True in Java?

到此這篇關于淺談為什么Java中1000==1000為false而100==100為true的文章就介紹到這了,更多相關Java 1000==1000為false 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 国产成人精品午夜 | 亚洲国产精品第一页 | 免费一级毛片不卡不收费 | 国产成人午夜精品影院游乐网 | 亚洲福利视频精选在线视频 | 久草热播 | 成人免费大片黄在线观看com | 国产精品3 | 国产美女精品在线 | 全免费a级毛片免费看 | 中文字幕综合在线 | 欧美在线看欧美高清视频免费 | 国产精品国产三级国产爱网 | 91视频青青 | 成人午夜电影免费完整在线看 | 精品欧美一区二区三区在线 | 365深夜福利在线观看 | 久久久久激情免费观看 | 真实国产乱子伦对白视频37p | 黄色一级片在线看 | 99国产精品欧美久久久久久影院 | 欧美日本韩国一区 | 色综合天天娱乐综合网 | 久久综合婷婷香五月 | 欧美日韩网 | 国产精品成人aaaaa网站 | 亚洲国产系列一区二区三区 | 久久成人国产精品免费 | 精品一区二区三区视频 | 在线观看成年美女黄网色视频 | 国产激情自拍 | 亚洲国产免费 | 国产免费福利视频一区二区 | 菠萝菠萝蜜在线看7 | 性插免费视频 | 亚洲美女久久 | 久草在线香蕉 | 国产成人h片视频在线观看 国产成人lu在线视频 | 一级黄色网址 | 欧美一级淫片a免费播放口aaa | 亚洲无线码1区 |