Integer內(nèi)存分析

關(guān)于Integer和int類型數(shù)據(jù)的內(nèi)存分析

底層代碼

 private static class IntegerCache {
        static final int low = -128;
        static final int high;
        static final Integer cache[];//緩存數(shù)組  -128~127

        static {
            // high value may be configured by property
            int h = 127;
            String integerCacheHighPropValue =
                sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
            if (integerCacheHighPropValue != null) {
                try {
                    int i = parseInt(integerCacheHighPropValue);
                    i = Math.max(i, 127);
                    // Maximum array size is Integer.MAX_VALUE
                    h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
                } catch( NumberFormatException nfe) {
                    // If the property cannot be parsed into an int, ignore it.
                }
            }
            high = h;

            cache = new Integer[(high - low) + 1];
            int j = low;
            for(int k = 0; k < cache.length; k++)
                cache[k] = new Integer(j++);

            // range [-128, 127] must be interned (JLS7 5.1.7)
            assert IntegerCache.high >= 127;
        }

        private IntegerCache() {}
    }

    /**
     * Returns an {@code Integer} instance representing the specified
     * {@code int} value.  If a new {@code Integer} instance is not
     * required, this method should generally be used in preference to
     * the constructor {@link #Integer(int)}, as this method is likely
     * to yield significantly better space and time performance by
     * caching frequently requested values.
     *
     * This method will always cache values in the range -128 to 127,
     * inclusive, and may cache other values outside of this range.
     *
     * @param  i an {@code int} value.
     * @return an {@code Integer} instance representing {@code i}.
     * @since  1.5
     */
    public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

package com.qfedu.c_baozhuang;

public class Demo3 {
    public static void main(String[] args) {
        Integer i1 = 10;//沒(méi)有new 直接從常量池中取的
        Integer i2 = 10;//沒(méi)有new  直接從常量池中取的
        System.out.println(i1 == i2);//true
        Integer i3 = 1000;//new對(duì)象了
        Integer i4 = 1000;//new對(duì)象了
        System.out.println(i3 == i4);//false

        //考察了Integer類加載的時(shí)候悯许,
        // 它就創(chuàng)建了自己的靜態(tài)空間(常量池)瘫想,
        // 立即加載了Integer類型的數(shù)組昧谊, static final Integer cache[];
        // 數(shù)組內(nèi)存儲(chǔ)了256個(gè)Integer類型的對(duì)象-128 - 127玫霎,
        // 如果我們用的對(duì)象范圍在這之內(nèi)褥蚯,是final修飾的挚冤,就意味著不會(huì)改變地址
        //i1 沒(méi)有超過(guò)-128 ~127這個(gè)范圍的時(shí)候,不會(huì)改變地址的赞庶,就意味著內(nèi)存地址是一樣的
        //使用==的時(shí)候训挡,比較內(nèi)存地址澳骤,所以相等!@奖 为肮!
        // 如Ingeger i1 = 10;JVM就會(huì)直接從靜態(tài)區(qū)的Integer類型的緩沖數(shù)組中直接找對(duì)應(yīng)的對(duì)象肤京,
        // 如果我們用的對(duì)象范圍超出了這個(gè)-128~127弥锄,例如Integer i1 = 1000;
        // JVM就會(huì)幫我們?cè)诙褍?nèi)存中創(chuàng)建一個(gè)新的Integer對(duì)象蟆沫。那么內(nèi)存地址不一樣的
        //  使用==比較的就是一個(gè)false
        
    }
}

京東面試題:

Integer i1 = 10;
Intger i2 = 10;
sout(i1 == i2);//true  不會(huì)創(chuàng)建新的對(duì)象籽暇,直接從常量池
Integer i3 = 1000;
Integer i4 = 1000;
sout(i3 == i4);//false 已經(jīng)超過(guò)緩存數(shù)組的容量了-128~127 ,就要在堆區(qū)去創(chuàng)建新的對(duì)象了


總結(jié):

int類型賦值:不管值的大小,都在常量池中7古印=溆啤!

int a=  128;  int a = 8999;   都在常量池中V凵健3窈!

Integer類型賦值:

Integer i1 = 10;//不會(huì)在堆區(qū)創(chuàng)建對(duì)象
Integer i2 = 1000;//堆區(qū)會(huì)創(chuàng)建對(duì)象累盗,值會(huì)指向常量池中的那個(gè)值:蟆!若债!
若值的范圍在-128~127之間符相,在常量池中!4懒铡啊终!
如果值的范圍不在-128~127之間,則在堆區(qū)創(chuàng)建對(duì)象傲须,進(jìn)行賦值了

實(shí)例化Integer對(duì)象:

Integer i1 = new Integer(12);
只要是new的Integer  使用== 都是false
9.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蓝牲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子泰讽,更是在濱河造成了極大的恐慌例衍,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件已卸,死亡現(xiàn)場(chǎng)離奇詭異佛玄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)咬最,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門翎嫡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人永乌,你說(shuō)我怎么就攤上這事惑申。” “怎么了翅雏?”我有些...
    開(kāi)封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵圈驼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我望几,道長(zhǎng)绩脆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任橄抹,我火速辦了婚禮靴迫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘楼誓。我一直安慰自己玉锌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布疟羹。 她就那樣靜靜地躺著主守,像睡著了一般。 火紅的嫁衣襯著肌膚如雪榄融。 梳的紋絲不亂的頭發(fā)上参淫,一...
    開(kāi)封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音愧杯,去河邊找鬼涎才。 笑死,一個(gè)胖子當(dāng)著我的面吹牛力九,可吹牛的內(nèi)容都是我干的憔维。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼畏邢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼业扒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起舒萎,我...
    開(kāi)封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤程储,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后臂寝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體章鲤,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年咆贬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了败徊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掏缎,死狀恐怖皱蹦,靈堂內(nèi)的尸體忽然破棺而出煤杀,到底是詐尸還是另有隱情,我是刑警寧澤沪哺,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布沈自,位于F島的核電站,受9級(jí)特大地震影響辜妓,放射性物質(zhì)發(fā)生泄漏枯途。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一籍滴、第九天 我趴在偏房一處隱蔽的房頂上張望酪夷。 院中可真熱鬧,春花似錦孽惰、人聲如沸晚岭。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腥例。三九已至,卻和暖如春酝润,著一層夾襖步出監(jiān)牢的瞬間燎竖,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工要销, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留构回,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓疏咐,卻偏偏與公主長(zhǎng)得像纤掸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浑塞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

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