91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2022-01-06 21:56:37 來源:億速云 閱讀:125 作者:iii 欄目:編程語言

本篇內容介紹了“Java中為什么1000==1000為false而100==100為true”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

如果你運行下面的代碼

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

你會得到

false
true

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

因此,后面一條語句也應該是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); //     }

“Java中為什么1000==1000為false而100==100為true”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绍兴县| 富锦市| 宾川县| 五台县| 缙云县| 宜兰市| 平度市| 鹿泉市| 云南省| 三河市| 德化县| 宜州市| 景泰县| 兴义市| 普兰县| 淳安县| 象州县| 崇阳县| 大港区| 内丘县| 姜堰市| 陕西省| 西林县| 民勤县| 普定县| 团风县| 永城市| 慈溪市| 乌恰县| 武陟县| 陈巴尔虎旗| 衡东县| 周宁县| 砚山县| 大田县| 当阳市| 安庆市| 兴安盟| 鄂州市| 蒲城县| 于田县|