自動裝箱與拆箱

一侥涵、詳解Java的自動裝箱與拆箱(Autoboxing and unboxing)

https://www.cnblogs.com/wang-yaz/p/8516151.html

Integer total = 99;     // 反編譯后,實際代碼:Integer total = Integer.valueOf(99);扣墩,自動裝箱:.valueOf()
int totalprim = total;     // int totalprim = total.intValue();广辰,自動拆箱:.intValue()

Integer i = 100;
int j = 99;
Object k = i + j;// i3是Integer類型叉信,因為有Object?
public static void main(String[] args) {
        
/*
    public static Integer valueOf(int i) {
    return  i >= 128 || i < -128 ? new Integer(i) : SMALL_VALUES[i + 128];
    }
    
    private static final Integer[] SMALL_VALUES = new Integer[256];    SMALL_VALUES[0] = -128
*/
        
        Integer i1 = 127;    // 小于128拆檬,在提前創(chuàng)建的SMALL_VALUES中取用约素,所以是同一個對象
        Integer i2 = 127;
        
        Integer i3 = 128;    // 無論如何,都new新的Integer
        Integer i4 = 128;
        
        System.out.println("i1 = i2:" + (i1 == i2));    // true
        System.out.println("i3 = i4:" + (i3 == i4));    // false
        
        Double d1 = 127.0;    // Double中間有無數(shù)個數(shù)贝攒,無法先創(chuàng)建好數(shù)組供選擇盗誊,只能每次都new Double()  
        Double d2 = 127.0;
        
        Double d3 = 128.0;    
        Double d4 = 128.0;
        
        System.out.println("d1 = d2:" + (d1 == d2));    // false
        System.out.println("d3 = d4:" + (d3 == d4));    // false
        
        
        Integer i5 = 100;
        int i6 = 100;
        Long l1 = 200L;
        
        1、當(dāng)一個基礎(chǔ)數(shù)據(jù)類型與封裝類進行==隘弊、+哈踱、-、*梨熙、/運算時开镣,會將封裝類進行拆箱,對基礎(chǔ)數(shù)據(jù)類型進行運算咽扇。 
        2邪财、對于l1.equals(i5 + i6)為false的原因很簡單,我們還是根據(jù)代碼實現(xiàn)來說明:
        3质欲、當(dāng) “==”運算符的兩個操作數(shù)都是 包裝器類型的引用树埠,則是比較指向的是否是同一個對象;而如果其中有一個操作數(shù)是表達式(即包含算術(shù)運算)則比較的是數(shù)值(即會觸發(fā)自動拆箱的過程)嘶伟。

        @Override
        public boolean equals(Object o) {
            return (o instanceof Long) && (((Long) o).value == value);
        }
        
        它必須滿足兩個條件才為true: 
        1怎憋、類型相同 
        2、內(nèi)容相同 
        */
        System.out.println("i5 = i6:" + (i5 == i6));    //true
        
        
        //先對l1拆箱九昧,然后對i5绊袋、i6拆箱,進行運算比較
        System.out.println("i5 + i6 = l1:" + (l1 == (i6 + i5)));    //true
        System.out.println("i5 + i6 equals l1:" + (l1.equals((i6 + i5))));    //false


    }
  • 總結(jié):

~~~~1铸鹰、需要知道什么時候會引發(fā)裝箱和拆箱愤炸。
~~~~2、裝箱操作會創(chuàng)建對象掉奄,頻繁的裝箱操作會消耗許多內(nèi)存规个,影響性能,所以可以避免裝箱的時候應(yīng)該盡量避免姓建。
~~~~3诞仓、equals(Object o) 因為原equals方法中的參數(shù)類型是封裝類型,所傳入的參數(shù)類型是原始數(shù)據(jù)類型速兔,所以會自動對其裝箱墅拭,反之,會對其進行拆箱涣狗。
~~~~4谍婉、當(dāng)兩種不同類型用==比較時舒憾,包裝器類的需要拆箱, 當(dāng)同種類型用==比較時穗熬,會自動拆箱或者裝箱镀迂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市唤蔗,隨后出現(xiàn)的幾起案子探遵,更是在濱河造成了極大的恐慌,老刑警劉巖妓柜,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箱季,死亡現(xiàn)場離奇詭異,居然都是意外死亡棍掐,警方通過查閱死者的電腦和手機藏雏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來作煌,“玉大人掘殴,你說我怎么就攤上這事∽罱” “怎么了杯巨?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵蚤告,是天一觀的道長努酸。 經(jīng)常有香客問我,道長杜恰,這世上最難降的妖魔是什么获诈? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮心褐,結(jié)果婚禮上舔涎,老公的妹妹穿的比我還像新娘。我一直安慰自己逗爹,他們只是感情好亡嫌,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掘而,像睡著了一般挟冠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袍睡,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天知染,我揣著相機與錄音,去河邊找鬼斑胜。 笑死控淡,一個胖子當(dāng)著我的面吹牛嫌吠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掺炭,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼辫诅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了竹伸?” 一聲冷哼從身側(cè)響起泥栖,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎勋篓,沒想到半個月后吧享,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡譬嚣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年钢颂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拜银。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡殊鞭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尼桶,到底是詐尸還是另有隱情操灿,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布泵督,位于F島的核電站趾盐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏小腊。R本人自食惡果不足惜救鲤,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秩冈。 院中可真熱鬧本缠,春花似錦、人聲如沸入问。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芬失。三九已至楣黍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間麸折,已是汗流浹背锡凝。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垢啼,地道東北人窜锯。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓张肾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锚扎。 傳聞我的和親對象是個殘疾皇子吞瞪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361