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

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐ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? 這是一個(gè)挺有意思的討論話題。 如果你運(yùn)行下面的代碼:

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

你會(huì)得到

false true

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

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

這就是它有趣的地方了。

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

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

Integerc=100;

的時(shí)候,它實(shí)際上在內(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之間,它就從高速緩存返回實(shí)例。

所以…

Integerc=100,d=100;

指向了同一個(gè)對(duì)象。

這就是為什么我們寫

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

我們可以得到true。

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

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

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

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

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

責(zé)任編輯:xj

點(diǎn)贊和在看就是最大的支持

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

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

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

    關(guān)注

    20

    文章

    2987

    瀏覽量

    108191
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140971

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    VIAVI Xgig1000 32/128G光纖通道和25/50/100G以太網(wǎng)平臺(tái)是可解決具有可重構(gòu)端口的便攜式集成平臺(tái)中的8G/16G/32G/128G FC和10/25/50/100GE問題的產(chǎn)品
    的頭像 發(fā)表于 03-21 15:37 ?416次閱讀
    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)相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有K7815-1000(L)的引腳圖、接線圖、封裝手冊(cè)、中文資料、英文資料,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相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有ADAS1000-4的引腳圖、接線圖、封裝手冊(cè)、中文資料、英文資料,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相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有ADAS1000-1的引腳圖、接線圖、封裝手冊(cè)、中文資料、英文資料,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相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有ADAS1000-3的引腳圖、接線圖、封裝手冊(cè)、中文資料、英文資料,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相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有ADAS1000的引腳圖、接線圖、封裝手冊(cè)、中文資料、英文資料,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相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有ADAS1000-2的引腳圖、接線圖、封裝手冊(cè)、中文資料、英文資料,ADAS1000-2真值表,AD
    發(fā)表于 03-10 18:37
    ADAS<b class='flag-5'>1000</b>-2 adi

    ADRF6850 100MHz至1000MHz集成寬帶接收機(jī)技術(shù)手冊(cè)

    ADRF6850是一款高度集成的寬帶正交解調(diào)器、頻率合成器和可變?cè)鲆娣糯笃?VGA)。該器件工作在100 MHz至1000 MHz的頻率范圍,適用于窄帶和寬帶通信應(yīng)用,能夠執(zhí)行從中頻(IF)直接到基帶頻率的正交解調(diào)。
    的頭像 發(fā)表于 03-01 10:36 ?424次閱讀
    ADRF6850 <b class='flag-5'>100</b>MHz至<b class='flag-5'>1000</b>MHz集成寬帶接收機(jī)技術(shù)手冊(cè)

    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使用的具體時(shí)序是怎樣的

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

    請(qǐng)問LDC1000是否可以測(cè)量大線圈?

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

    74ALVC164245是否能支持速率100Mbps的信號(hào)轉(zhuǎn)換?

    請(qǐng)幫忙確認(rèn)74ALVC164245是否能支持速率100Mbps的信號(hào)轉(zhuǎn)換,Datasheet上并沒有找到明確的描述,謝謝!
    發(fā)表于 12-11 06:51

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

    【迅電子】龍芯LS2K1000LA和LS2K1000有何區(qū)別?
    的頭像 發(fā)表于 11-13 14:13 ?699次閱讀
    【迅<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倍左右?請(qǐng)問要放大1000倍如何接才正確?
    發(fā)表于 09-11 07:25

    是否可以將默認(rèn)configTICK_RATE_HZ 100Hz更改為1000Hz?

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