Integer 類(lèi)的深入解析

Integer_source_code.png

Integer 之間的比較 和 int之間比較

  • Integer i = 35;
    System.out.println(i);
    對(duì)Integer i = 35;對(duì)i執(zhí)行了valueOf方法:
    System.out.println(Integer.valueOf(i));
  • int i = 34; Integer j = 34;
    int i = 288;Integer j = 288;
    Integer j = 34/288;在jvm編譯過(guò)程中均自動(dòng)執(zhí)行Integer.valueOf(i)方法材蛛。對(duì)于Integer i = 34,實(shí)質(zhì)上i = Integer.IntegerCache.cache[i+128]
    對(duì)于Integer j=288,實(shí)質(zhì)上j = new Integer(288);
    比較 int i = 34 和 Integer j = 34,實(shí)質(zhì)上比較 int i = 34 和
    Integer.IntegerCache.cache[j+128]沛膳,jvm發(fā)現(xiàn)和int原生類(lèi)型比較,則將Integer.IntegerCache.cache[j+128] 拆箱操作绞幌,即執(zhí)行intValue()方法,
    返回Integer的value成員變量值
    System.out.println(i == j) 實(shí)質(zhì)為:
    System.out.println(i== Integer.IntegerCache.cache[j+128].intValue);則變?yōu)閮蓚€(gè)原生類(lèi)型比較耽梅。
    比較 int i = 288 和 Integer j = 288,實(shí)質(zhì)上比較 int i = 288 和
    new Integer(288),jvm 發(fā)現(xiàn)和int原生類(lèi)型進(jìn)行比較挨约,則將new Integer(288)進(jìn)行拆箱操作,即執(zhí)行intValue方法儒飒,返回Integer對(duì)象的value成員變量谬莹。
    System.out.println(i == j) 實(shí)質(zhì)為:
    System.out.println(i == new Integer(j).intValue());則變?yōu)閮蓚€(gè)原生類(lèi)型比較。
  • int i = 34; Integer j = new Integer(34);
    System.out.println(i == j);
    比較 int i = 34 和 Integer j = new Integer(34);jvm 發(fā)現(xiàn)j和原生類(lèi)型比較桩了,則進(jìn)行拆箱操作附帽,即執(zhí)行intValue方法,返回Integer對(duì)象的value成員變量井誉。
    System.out.println(i == j) 實(shí)質(zhì)為:
    System.out.println(i == j.intValue());則變?yōu)閮蓚€(gè)原生類(lèi)型比較
  • Integer i = 34; Integer j = new Integer(34);
    Integer i = 34; 實(shí)質(zhì)上執(zhí)行Integer.valueOf(i) 方法蕉扮,判斷i在
    [-128,127]之間,i = Integer.IntegerCache.cache[i+128];
    比較的都是兩個(gè)Integer對(duì)象送悔,因此不涉及裝箱和拆箱的操作
    System.out.println(Integer.IntegerCache.cache[i+128] == j);
    比較兩個(gè)對(duì)象慢显,永遠(yuǎn)為false。
    Integer i = 288; Integer j = new Integer(288);
    Integer i = 288;實(shí)質(zhì)上執(zhí)行Integer.valueOf(i) 方法欠啤,判斷i不在[-128,127]之間荚藻,i = new Integer(288);
    比較的都是兩個(gè)Integer對(duì)象,因此不涉及裝箱和拆箱的操作
    System.out.println(new Integer(i) == j);
    比較兩個(gè)對(duì)象洁段,永遠(yuǎn)為false应狱。
  • Integer i = new Integer(34);Integer j = new Integer(34);
    System.out.println(i == j);
    比較的是兩個(gè)對(duì)象,不涉及裝箱和拆箱的操作祠丝,因此永遠(yuǎn)返回false疾呻。
  • Integer i = 34;Integer j = 34;
    Integer i = 288;Integer j = 288;
    比較 Integer i = 34 和 Integer j = 34除嘹,Integer i = 34 和 Integer j = 34,執(zhí)行Integer.valueOf()方法岸蜗。
    Integer.valueOf(i) 首先判斷i在[-128,127]之間尉咕,則返回
    Integer.IntegerCache.cache[i+128]
    Integer.valueOf(j) 首先判斷j在[-128,127]之間,則返回
    Integer.IntegerCache.cache[i+128]
    System.out.println(i == j) 實(shí)質(zhì)上比較:
    System.out.println(Integer.IntegerCache.cache(i+128) ==
    Integer.IntegerCache.cache(j+128))
    //只需比較值即可
    比較 Integer i = 288 和 Integer j = 288璃岳,Integer i = 288 和 Integer j = 288年缎,執(zhí)行Integer.valueOf()方法。
    Integer.valueOf(i) 判斷i不在[-128,127]之間铃慷,則返回new Integer(288)
    Integer.valueOf(j) 判斷j不在[-128,127]之間单芜,則返回new Integer(288)
    System.out.println(i == j) 實(shí)質(zhì)上比較:
    System.out.println(new Integer(288) == new Integer(288))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市犁柜,隨后出現(xiàn)的幾起案子洲鸠,更是在濱河造成了極大的恐慌,老刑警劉巖馋缅,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扒腕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡股囊,警方通過(guò)查閱死者的電腦和手機(jī)袜匿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)稚疹,“玉大人,你說(shuō)我怎么就攤上這事祭务∧诠罚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵义锥,是天一觀的道長(zhǎng)柳沙。 經(jīng)常有香客問(wèn)我,道長(zhǎng)拌倍,這世上最難降的妖魔是什么赂鲤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮柱恤,結(jié)果婚禮上数初,老公的妹妹穿的比我還像新娘。我一直安慰自己梗顺,他們只是感情好泡孩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著寺谤,像睡著了一般仑鸥。 火紅的嫁衣襯著肌膚如雪吮播。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天眼俊,我揣著相機(jī)與錄音意狠,去河邊找鬼。 笑死疮胖,一個(gè)胖子當(dāng)著我的面吹牛环戈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播获列,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼谷市,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了击孩?” 一聲冷哼從身側(cè)響起迫悠,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巩梢,沒(méi)想到半個(gè)月后创泄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡括蝠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年鞠抑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忌警。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搁拙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出法绵,到底是詐尸還是另有隱情箕速,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布朋譬,位于F島的核電站盐茎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏徙赢。R本人自食惡果不足惜字柠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狡赐。 院中可真熱鬧窑业,春花似錦、人聲如沸阴汇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至拐纱,卻和暖如春铜异,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秸架。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工揍庄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人东抹。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓蚂子,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缭黔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子食茎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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

  • 【程序1】 題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子馏谨,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔...
    葉總韓閱讀 5,140評(píng)論 0 41
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法别渔,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法惧互,繼承相關(guān)的語(yǔ)法哎媚,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,664評(píng)論 18 399
  • Java經(jīng)典問(wèn)題算法大全 /*【程序1】 題目:古典問(wèn)題:有一對(duì)兔子喊儡,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子拨与,小兔子...
    趙宇_阿特奇閱讀 1,875評(píng)論 0 2
  • 最近兩年买喧,到過(guò)家鄉(xiāng)以外的許多地方。西邊到過(guò)張掖匆赃,嘉峪關(guān)岗喉;往東走是天水,西安炸庞,往南走去了重慶和廣州,現(xiàn)在又穿過(guò)大半個(gè)...
    窩窩的特殊時(shí)光閱讀 315評(píng)論 0 2
  • 風(fēng)雪品茗嘉木香荚斯, 盤(pán)膝安踏素蘭馨埠居, 何期為誰(shuí)寫(xiě)青春, 莫道長(zhǎng)歌已若詩(shī)事期。
    理療瑜伽邵閱讀 247評(píng)論 0 0