一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

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

數(shù)據(jù)分析與開發(fā) ? 來源:數(shù)據(jù)分析與開發(fā) ? 作者:codeceo ? 2020-11-19 15:51 ? 次閱讀

為什么 Java 中“1000==1000”為false,而”100==100“為true? 這是一個挺有意思的討論話題。 如果你運行下面的代碼:

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

你會得到

false true

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

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

這就是它有趣的地方了。

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

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

Integerc=100;

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

Integeri=Integer.valueOf(100);

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

publicstaticIntegervalueOf(inti){ if(i>=IntegerCache.low&&i returnIntegerCache.cache[i+(-IntegerCache.low)]; returnnewInteger(i); }

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

所以…

Integerc=100,d=100;

指向了同一個對象。

這就是為什么我們寫

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

我們可以得到true。

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

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

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

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

publicstaticvoidmain(String[]args)throwsNoSuchFieldException,IllegalAccessException{ Classcache=Integer.class.getDeclaredClasses()[0];//1 FieldmyCache=cache.getDeclaredField("cache");//2 myCache.setAccessible(true);//3 Integer[]newCache=(Integer[])myCache.get(cache);//4 newCache[132]=newCache[133];//5 inta=2; intb=a+a; System.out.printf("%d+%d=%d",a,a,b);// }

責任編輯:xj

點贊和在看就是最大的支持

原文標題:為什么 Java 中“1000==1000”為false,而”100==100“為true?

文章出處:【微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    20

    文章

    2983

    瀏覽量

    106580
  • C語言
    +關注

    關注

    180

    文章

    7628

    瀏覽量

    139858

原文標題:為什么 Java 中“1000==1000”為false,而”100==100“為true?

文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    VIAVI Xgig 1000 32/128G FC和25/50/100GE以太網(wǎng)分析儀介紹

    VIAVI Xgig1000 32/128G光纖通道和25/50/100G以太網(wǎng)平臺是可解決具有可重構(gòu)端口的便攜式集成平臺中的8G/16G/32G/128G FC和10/25/50/100GE問題的產(chǎn)品
    的頭像 發(fā)表于 03-21 15:37 ?265次閱讀
    VIAVI Xgig <b class='flag-5'>1000</b> 32/128G FC和25/50/<b class='flag-5'>100</b>GE以太網(wǎng)分析儀介紹

    K7815-1000(L) K7815-1000(L)

    電子發(fā)燒友網(wǎng)你提供AIPULNION(AIPULNION)K7815-1000(L)相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有K7815-1000(L)的引腳圖、接線圖、封裝手冊、中文資料、英文資料,K7815-
    發(fā)表于 03-20 18:34
    K7815-<b class='flag-5'>1000</b>(L) K7815-<b class='flag-5'>1000</b>(L)

    ADAS1000-4 adi

    電子發(fā)燒友網(wǎng)你提供ADI(ADI)ADAS1000-4相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有ADAS1000-4的引腳圖、接線圖、封裝手冊、中文資料、英文資料,ADAS1000-4真值表,AD
    發(fā)表于 03-10 18:40
    ADAS<b class='flag-5'>1000</b>-4 adi

    ADAS1000-1 adi

    電子發(fā)燒友網(wǎng)你提供ADI(ADI)ADAS1000-1相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有ADAS1000-1的引腳圖、接線圖、封裝手冊、中文資料、英文資料,ADAS1000-1真值表,AD
    發(fā)表于 03-10 18:39
    ADAS<b class='flag-5'>1000</b>-1 adi

    ADAS1000-3 adi

    電子發(fā)燒友網(wǎng)你提供ADI(ADI)ADAS1000-3相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有ADAS1000-3的引腳圖、接線圖、封裝手冊、中文資料、英文資料,ADAS1000-3真值表,AD
    發(fā)表于 03-10 18:38
    ADAS<b class='flag-5'>1000</b>-3 adi

    ADAS1000 adi

    電子發(fā)燒友網(wǎng)你提供ADI(ADI)ADAS1000相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有ADAS1000的引腳圖、接線圖、封裝手冊、中文資料、英文資料,ADAS1000真值表,ADAS
    發(fā)表于 03-10 18:37
    ADAS<b class='flag-5'>1000</b> adi

    ADAS1000-2 adi

    電子發(fā)燒友網(wǎng)你提供ADI(ADI)ADAS1000-2相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有ADAS1000-2的引腳圖、接線圖、封裝手冊、中文資料、英文資料,ADAS1000-2真值表,AD
    發(fā)表于 03-10 18:37
    ADAS<b class='flag-5'>1000</b>-2 adi

    FCTS1000-10-5參考鎖相轉(zhuǎn)換器Synergy

    -3 dBm。相位噪聲:@ 100 Hz:-80 dBc/Hz。@ 1 kHz:-115 dBc/Hz。@ 10 kHz:-141 dBc/Hz。@ 100 kHz:-158 dBc/Hz
    發(fā)表于 02-11 09:29

    ldc1000使用的具體時序是怎樣的?

    ldc1000 evm,測得它的波形均是在上跳變接收數(shù)據(jù)和發(fā)送數(shù)據(jù),這與ldc1000的芯片手冊的時序圖不同,想問下您ldc1000的使用的具體時序是怎樣的
    發(fā)表于 01-13 07:59

    請問LDC1000是否可以測量大線圈?

    我使用TI 提供的 LDC1000EVM 模塊 測量電感線圈(線圈尺寸 1m*0.5m在100khz下 電感量:27uH Rs:0.3歐),并聯(lián)電容100pF. 使用TI提供的軟件
    發(fā)表于 01-08 07:13

    【迅電子】龍芯LS2K1000LA和LS2K1000有何區(qū)別?

    【迅電子】龍芯LS2K1000LA和LS2K1000有何區(qū)別?
    的頭像 發(fā)表于 11-13 14:13 ?584次閱讀
    【迅<b class='flag-5'>為</b>電子】龍芯LS2K<b class='flag-5'>1000</b>LA和LS2K<b class='flag-5'>1000</b>有何區(qū)別?

    INA333 RG接100歐不是放大1000倍嗎?怎么輸出才2倍左右?

    RG接100歐不是放大1000倍嗎?怎么輸出才2倍左右?請問要放大1000倍如何接才正確?
    發(fā)表于 09-11 07:25

    是否可以將默認configTICK_RATE_HZ 100Hz更改為1000Hz?

    我需要 1 毫秒的計時器精度,最好不使用硬件計時器。 是否可以將默認configTICK_RATE_HZ 100Hz 更改為 1000Hz?
    發(fā)表于 07-10 07:36

    DP83867IR/CR穩(wěn)健型高抗擾性10/100/1000以太網(wǎng)物理層收發(fā)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《DP83867IR/CR穩(wěn)健型高抗擾性10/100/1000以太網(wǎng)物理層收發(fā)器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 06-19 15:06 ?0次下載
    DP83867IR/CR穩(wěn)健型高抗擾性10/<b class='flag-5'>100</b>/<b class='flag-5'>1000</b>以太網(wǎng)物理層收發(fā)器數(shù)據(jù)表

    智嵌物聯(lián)100/1000BASE-T1千兆車載以太網(wǎng)交換機

    ZQWL-AES6502是智嵌物聯(lián)自主研發(fā)生產(chǎn)的一款2+5端口千兆車載以太網(wǎng)(100/1000BASE-T1)交換機。具有2個RJ45千兆網(wǎng)口(100BASE-Tx/1000BASE-
    的頭像 發(fā)表于 06-06 09:29 ?1690次閱讀
    智嵌物聯(lián)<b class='flag-5'>100</b>/<b class='flag-5'>1000</b>BASE-T1千兆車載以太網(wǎng)交換機