• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            The Fourth Dimension Space

            枯葉北風(fēng)寒,忽然年以殘,念往昔,語(yǔ)默心酸。二十光陰無(wú)一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢(mèng)令

            JAVA --String類筆試面試題

            字符串對(duì)象是一種特殊的對(duì)象.String類是一個(gè)不可變的類..也就說(shuō),String對(duì)象一旦創(chuàng)建就不允許修改

            String類有一個(gè)對(duì)應(yīng)的String池,也就是 String pool.每一個(gè)內(nèi)容相同的字符串對(duì)象都對(duì)應(yīng)于一個(gè)pool里的對(duì)象.

            1 看下面一段代碼.

            String s = new String("abc");
              String s1 = "abc";
              String s2 = new String("abc");
              
              System.out.println(s == s1);
              System.out.println(s == s2);
              System.out.println(s1 == s2);

            請(qǐng)問(wèn) 前面三條語(yǔ)句分別創(chuàng)建了幾個(gè)對(duì)象,分別是什么.后面的輸出分別是什么

            (1)String s = new String("abc"); 這句,創(chuàng)建了兩個(gè)對(duì)象..其內(nèi)容都是"abc".注意,s不是對(duì)象,只是引用.只有new生成的才是對(duì)象.

            創(chuàng)建的流程是,首先括號(hào)里的"abc"先到String pool里看有沒(méi)"abc"這個(gè)對(duì)象,沒(méi)有則在pool里創(chuàng)建這個(gè)對(duì)象..所以這里就在pool創(chuàng)建了一個(gè)"abc"對(duì)象.然后 通過(guò)new語(yǔ)句又創(chuàng)建了一個(gè)"abc"對(duì)象..而這個(gè)對(duì)象是放在內(nèi)存的堆里. .這里的s指向堆里的對(duì)象.

            (2) String s1 = "abc"; 這條語(yǔ)句,s1當(dāng)然還是引用.沒(méi)啥可說(shuō)的.后面的"abc".其實(shí)就是上面括號(hào)里的"abc".執(zhí)行的是相同的操作.即 在pool里查找有沒(méi)"abc"這個(gè)對(duì)象.沒(méi)有則創(chuàng)建一個(gè)...很顯然,第一條語(yǔ)句在pool里已經(jīng)創(chuàng)建了一個(gè)"abc".所以這條語(yǔ)句沒(méi)有創(chuàng)建對(duì)象,s1指向的是pool中的"abc"

            (3)String s2 = new String("abc"); 這條語(yǔ)句,其實(shí)和第一條是一樣的,但是,因?yàn)榈谝粭l已經(jīng)在pool中創(chuàng)建了"abc"這個(gè)對(duì)象,所以,這條語(yǔ)句創(chuàng)建了一個(gè)對(duì)象.s2指向的是堆里的"abc".注意,雖然內(nèi)容都是"abc",s與s2表示的是不同的對(duì)象

            (4)接下來(lái)就很好說(shuō)了.下面的三個(gè)==判斷.(注意,==永遠(yuǎn)是判斷內(nèi)存地址是否相等) s與s1,一個(gè)指向堆里的對(duì)象,一個(gè)指向pool里的.很明顯是不同的對(duì)象.s與s2.上面說(shuō)了,雖然都是指向堆里的對(duì)象,內(nèi)容也是"abc",但是也不是相同的對(duì)象.s1與s2.一個(gè)指向pool,一個(gè)指向堆.也不是相同的對(duì)象.所以三個(gè)都返回false.

            2 第二個(gè)問(wèn)題

            String s = new String("abc");
              String s1 = "abc";
              String s2 = new String("abc");
              
              System.out.println(s == s1.intern());
              System.out.println(s == s2.intern());
              System.out.println(s1 == s2.intern());

            求最后輸出是什么

            解答.最后的答案是 false false true

            intern()方法.按照jdk的幫助文檔來(lái)說(shuō),是返回字符串對(duì)象的規(guī)范化表示形式。通俗一點(diǎn)說(shuō),就是返回對(duì)應(yīng)這個(gè)字符串內(nèi)容的那個(gè)pool里的對(duì)象.這樣說(shuō)也許還看不太明白,那可以拿具體例子來(lái)說(shuō)

            s1.intern().他的執(zhí)行流程是,在pool里去查找s1對(duì)應(yīng)的內(nèi)容(也就是"abc").如果找到,則返回pool里的對(duì)象.如果沒(méi)有(老實(shí)說(shuō),我沒(méi)想到有哪種情況是沒(méi)有的),則在Pool創(chuàng)建這個(gè)對(duì)象,并返回...

            這樣就很容易理解了.s1.intern返回的是pool里的"abc"對(duì)象.與s這個(gè)堆里的對(duì)象肯定不同,返回false.同理,s與s2.intern()也肯定不同,返回false.第三個(gè),s1與s2.intern().其中s2.intern()返回的是pool中的"abc"對(duì)象,而s1也是指向pool中的"abc"對(duì)象.所以返回的是true:

            3第三個(gè)問(wèn)題

            String hello = "hello";
              String hel = "hel";
              String lo = "lo";
              
              System.out.println(hello == "hel" + "lo");
              System.out.println(hello == "hel" + lo);

            求輸出的結(jié)果

            解答 true false

            首先,上面已經(jīng)說(shuō)明了,hello hel lo這三個(gè)都是指向pool中的對(duì)象..

            現(xiàn)在我們考慮"hel" + "lo" 按照內(nèi)容來(lái)說(shuō),兩個(gè)相加也就是"hello".這個(gè)時(shí)候,這個(gè)會(huì)返回pool中的"hello"對(duì)象.所以,hello == "hel" + "lo" 返回的是true .

            而"hel" + lo 雖然內(nèi)容也是"hello",但是它將在堆里面生成一個(gè)"hello"對(duì)象,并返回這個(gè)對(duì)象...所以這里的結(jié)果是false

            總結(jié)一下就是,如果加號(hào)兩邊的是字面值(字面值就是直接在""里寫(xiě)的值,比如上面的"hel"與"lo"),那么將在pool里查找有沒(méi)對(duì)應(yīng)內(nèi)容的對(duì)象(這里的內(nèi)容就是"hello"),并返回pool里的對(duì)象.這和hello是一樣的....

            如果加號(hào)兩邊不滿足上面的條件(比如,兩邊的值是引用值或者堆里的字符串對(duì)象).那么將不會(huì)再pool里查找"hello",而是直接在堆里生成一個(gè)新的對(duì)象...


            轉(zhuǎn)自:http://jingbo2759.blog.163.com/blog/static/98375315200971731522144/

            posted on 2010-04-23 22:06 abilitytao 閱讀(523) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            亚洲精品美女久久久久99小说| 97久久婷婷五月综合色d啪蜜芽| 国产高潮久久免费观看| 国产综合免费精品久久久| 久久亚洲电影| 国产综合久久久久久鬼色| 久久免费99精品国产自在现线| 亚洲国产精品无码久久98| 久久福利片| av国内精品久久久久影院| 香蕉aa三级久久毛片| 99热热久久这里只有精品68| 思思久久好好热精品国产| 国产L精品国产亚洲区久久| 亚洲精品乱码久久久久久蜜桃图片| 曰曰摸天天摸人人看久久久| 久久人人爽人人爽人人爽| 久久99精品国产麻豆蜜芽| 国产亚洲欧美精品久久久| 久久亚洲日韩看片无码| 午夜视频久久久久一区| 97久久精品人人做人人爽| 91精品国产91久久久久福利| 成人午夜精品无码区久久| 久久夜色精品国产噜噜亚洲a| 成人a毛片久久免费播放| 99久久精品国产免看国产一区| 亚洲精品乱码久久久久久| 日韩欧美亚洲综合久久| 怡红院日本一道日本久久| 久久久无码精品亚洲日韩蜜臀浪潮| 99久久做夜夜爱天天做精品| 夜夜亚洲天天久久| 香蕉久久夜色精品国产小说| 99久久免费国产精精品| 国内精品久久久久久99蜜桃| 国产一久久香蕉国产线看观看 | 久久亚洲国产中v天仙www| 国产精品一久久香蕉国产线看观看| 国内精品综合久久久40p| 亚洲中文字幕无码久久综合网|