關(guān)于Integer類思考

測(cè)試代碼:

public class IntegerTest {
    public static void main(String[] args) {
        Integer i1 = 12;
        Integer i2 = 12;
        Integer i3 = 135;
        Integer i4 = 135;
        System.out.println("i1 == i2? " + (i1 == i2));
        System.out.println("i3 == i4? " + (i3 == i4));
    }
}

輸出結(jié)果:

i1 == i2? true
i3 == i4? false

為什么都是Integer類的對(duì)象會(huì)輸出不同的結(jié)果呢皮获?
是因?yàn)镮nteger類的內(nèi)部做了緩存處理惫企,在Integer內(nèi)部有一個(gè)IntegerCache的靜態(tài)內(nèi)部類逐哈,該內(nèi)部類中會(huì)緩存-128到127的整數(shù)书释。當(dāng)用一個(gè)int類型的變量給Integer時(shí)竟贯,會(huì)使用自動(dòng)裝箱的程序盗誊。

public final class Integer extends Number implements 
Comparable<Integer> {
  ...
  private static class IntegerCache {
    static final int low = -128;
    static final int high;
    static final Integer cache[];
    ...
    cache = new Integer[(high-low)+1];
    int j = low;
    for(int k = 0;k < cache.length;k ++) 
      cache[k] = new Integer(j++);
      ...
  }
  ...
  //自動(dòng)裝箱的程序
  public static Integer valueOf(int i) {
    if(i >= IntegerCache.low && i <= IntegerCache.high)
      return IntegerCache.cache[i+(-IntegerCache.low)];
    return new Integer(i);
  }
  ...
}

為了進(jìn)一步深入地理解Integer中的玄機(jī)圣猎,可以增加一下難度士葫,使用synchronized關(guān)鍵字進(jìn)一步驗(yàn)證。

public class ThreadA {
    static Integer integer = 8;
    public static void main(String[] args) throws InterruptedException{
        ThreadB b =new ThreadB();
        b.start();
        synchronized (integer) {
            System.out.println("deng dui xiang b wan cheng b wan 
cheng ....");
            integer.wait();
            System.out.println("b dui xiang zong he shi :" + b.total);
        }
    }
}
class ThreadB extends Thread {
    int total;
    Integer integer = 8;
    @Override
    public void run() {
        synchronized (integer) {
            for(int i = 0;i < 101;i ++) {
                total += i;
            }
            integer.notify();
            System.out.println("computing is finished");
        }
    }
}

輸出結(jié)果

deng dui xiang b wan cheng b wan cheng ....
computing is finished
b dui xiang zong he shi :5050

程序中兩處使用Integer類的對(duì)象作為監(jiān)視器送悔,兩個(gè)Integer的對(duì)象都是分別new出來的慢显,但是仍然可以實(shí)現(xiàn)兩個(gè)線程的通信,所以從從此也可以判斷出Integer內(nèi)部是使用cache的機(jī)制欠啤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荚藻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子洁段,更是在濱河造成了極大的恐慌应狱,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祠丝,死亡現(xiàn)場(chǎng)離奇詭異疾呻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)写半,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門岸蜗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叠蝇,你說我怎么就攤上這事璃岳。” “怎么了悔捶?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵铃慷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我炎功,道長(zhǎng)枚冗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任蛇损,我火速辦了婚禮赁温,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淤齐。我一直安慰自己股囊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布更啄。 她就那樣靜靜地躺著稚疹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祭务。 梳的紋絲不亂的頭發(fā)上内狗,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天怪嫌,我揣著相機(jī)與錄音,去河邊找鬼柳沙。 笑死岩灭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赂鲤。 我是一名探鬼主播噪径,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼数初!你這毒婦竟也來了找爱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤泡孩,失蹤者是張志新(化名)和其女友劉穎车摄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體珍德,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡练般,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锈候。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薄料。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖泵琳,靈堂內(nèi)的尸體忽然破棺而出摄职,到底是詐尸還是另有隱情,我是刑警寧澤获列,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布谷市,位于F島的核電站,受9級(jí)特大地震影響击孩,放射性物質(zhì)發(fā)生泄漏迫悠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一巩梢、第九天 我趴在偏房一處隱蔽的房頂上張望创泄。 院中可真熱鬧,春花似錦括蝠、人聲如沸鞠抑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)搁拙。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間箕速,已是汗流浹背酪碘。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弧满,地道東北人婆跑。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像庭呜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子犀忱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法募谎,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法阴汇,繼承相關(guān)的語(yǔ)法数冬,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,639評(píng)論 18 399
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,529評(píng)論 3 93
  • Java8張圖 11搀庶、字符串不變性 12拐纱、equals()方法、hashCode()方法的區(qū)別 13哥倔、...
    Miley_MOJIE閱讀 3,707評(píng)論 0 11
  • 已經(jīng)沒有音信幾個(gè)月了咆蒿,終于鼓起勇氣問了她的近況东抹,對(duì)啊?她挺好的,我應(yīng)該開心才對(duì)沃测$郧可是為什么開心不起來呢? 看文章說...
    Ttss玄閱讀 252評(píng)論 0 1
  • 他叫凡哥,4 年前被他老婆踹了附迷,因?yàn)楦F惧互。 凡哥和老婆是大學(xué)認(rèn)識(shí)的。 他老婆是大學(xué)霸挟秤,長(zhǎng)得還特別漂亮壹哺。 凡哥是超級(jí)學(xué)...
    先森豬閱讀 404評(píng)論 0 0