最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年09月09日 15:47:58   作者:碼農(nóng)網(wǎng) – 小峰  
這篇文章主要介紹了淺談為什么Java中1000==1000為false而100==100為true,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

如果你運(yùn)行下面的代碼

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

你會得到

false
true

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

因此,后面一條語句也應(yīng)該是false 。

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

所以事情就成了,所有的小整數(shù)在內(nèi)部緩存,然后當(dāng)我們聲明類似——

Integer c = 100;

的時候,它實(shí)際上在內(nèi)部做的是

Integer i = Integer.valueOf(100);

現(xiàn)在,如果我們?nèi)タ磛alueOf()方法,我們可以看到

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

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

所以…

Integer c = 100, d = 100;

指向了同一個對象。

這就是為什么我們寫

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

我們可以得到true。

現(xiàn)在你可能會問,為什么這里需要緩存?

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

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

運(yùn)行下面的代碼,享受它的魅力吧

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?

到此這篇關(guān)于淺談為什么Java中1000==1000為false而100==100為true的文章就介紹到這了,更多相關(guān)Java 1000==1000為false 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • HttpUtils 發(fā)送http請求工具類(實(shí)例講解)

    HttpUtils 發(fā)送http請求工具類(實(shí)例講解)

    下面小編就為大家?guī)硪黄狧ttpUtils 發(fā)送http請求工具類(實(shí)例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • java中Serializable接口作用詳解

    java中Serializable接口作用詳解

    這篇文章主要為大家詳細(xì)介紹了java中Serializable接口作用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 非常適合新手學(xué)生的Java線程池優(yōu)化升級版

    非常適合新手學(xué)生的Java線程池優(yōu)化升級版

    作者是一個來自河源的大三在校生,以下筆記都是作者自學(xué)之路的一些淺薄經(jīng)驗(yàn),如有錯誤請指正,將來會不斷的完善筆記,幫助更多的Java愛好者入門
    2022-03-03
  • Java多線程之火車售票系統(tǒng)

    Java多線程之火車售票系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java多線程之火車售票系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 使用Spring?Boot?2.x構(gòu)建Web服務(wù)的詳細(xì)代碼

    使用Spring?Boot?2.x構(gòu)建Web服務(wù)的詳細(xì)代碼

    這篇文章主要介紹了使用Spring?Boot?2.x構(gòu)建Web服務(wù)的詳細(xì)代碼,主要基于JWT的身份認(rèn)證,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 基于Java中throw和throws的區(qū)別(詳解)

    基于Java中throw和throws的區(qū)別(詳解)

    下面小編就為大家?guī)硪黄贘ava中throw和throws的區(qū)別(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • JAVA8獲取list集合中重復(fù)的元素與獲取去重數(shù)據(jù)實(shí)例

    JAVA8獲取list集合中重復(fù)的元素與獲取去重數(shù)據(jù)實(shí)例

    這篇文章主要給大家介紹了關(guān)于JAVA8獲取list集合中重復(fù)的元素與獲取去重數(shù)據(jù)的相關(guān)資料,在實(shí)際開發(fā)中經(jīng)常會遇到需要找出(刪除)一個list中某些元素的屬性相同的元素,需要的朋友可以參考下
    2023-07-07
  • Quartz之Job與JobDetail深入解析

    Quartz之Job與JobDetail深入解析

    下面小編就為大家?guī)硪黄猀uartz之Job與JobDetail深入解析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • JAVA抽象類及接口使用方法解析

    JAVA抽象類及接口使用方法解析

    這篇文章主要介紹了JAVA抽象類及接口使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • springboot中使用ElasticSearch的詳細(xì)教程

    springboot中使用ElasticSearch的詳細(xì)教程

    這篇文章主要介紹了ElasticSearch在springboot中使用的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05

最新評論

莱芜市| 贡嘎县| 潼关县| 锡林郭勒盟| 黎川县| 镇安县| 津南区| 沾益县| 西林县| 沁阳市| 泸定县| 宁河县| 泸溪县| 阿拉善左旗| 无极县| 武安市| 渝北区| 林州市| 平潭县| 乐都县| 公安县| 大丰市| 舞阳县| 永平县| 武城县| 略阳县| 铜山县| 舟山市| 耒阳市| 沐川县| 自治县| 辽阳市| 柳林县| 胶南市| 永昌县| 湾仔区| 常州市| 阜阳市| 颍上县| 新宾| 沭阳县|