posts - 17,  comments - 14,  trackbacks - 0

          String是在java編程中用的最多的數(shù)據(jù)類型,因此也有很多與其他數(shù)據(jù)類型不同的性質(zhì)。

          創(chuàng)建字符串可以用的命令有:

          String str="abc";//創(chuàng)建str字符串,內(nèi)容為abc。

          String str=new String("abc");//創(chuàng)建str字符串,內(nèi)容為abc。

          雖然兩種方法都可以創(chuàng)建,但是卻有很大的不同。

          分析一下這兩句命令:

          String str="abc";

          這句程序的內(nèi)存分配情況為:

          16

          首先在棧內(nèi)存中為str開(kāi)辟空間,然后在堆內(nèi)存中開(kāi)辟匿名字符串a(chǎn)bc的空間,再由str指向abc的空間。這種方法很簡(jiǎn)單,也很方便,而且在堆內(nèi)存中也只開(kāi)辟了一塊內(nèi)容為abc的空間,沒(méi)有多余的空間。

          如果寫語(yǔ)句:String str1="abc";創(chuàng)建一個(gè)str1字符串,內(nèi)容同樣為abc,那么內(nèi)存空間的開(kāi)辟和指向情況為:

          17

          可以看到str和str1指向同一塊堆內(nèi)存,這是為什么呢?因?yàn)镾tring用的最多,很特殊,因?yàn)閷?duì)于String來(lái)講使用直接賦值的方式會(huì)在字符串池中保存內(nèi)容。如果之后在聲明字符串的時(shí)候發(fā)現(xiàn)內(nèi)容一樣,則不會(huì)重新開(kāi)辟空間,而是從內(nèi)存池中取出數(shù)據(jù)繼續(xù)使用。

          String str=new String("abc");

          這句程序的內(nèi)存分配情況為:

          18

          19

          這句程序會(huì)在堆內(nèi)存中開(kāi)辟一塊內(nèi)容為abc的匿名空間,然后再new一塊空間,賦值abc,并有str指向這里,這時(shí)候匿名空間由于沒(méi)有棧指向成為垃圾,然后被回收。

          可以發(fā)現(xiàn),程序開(kāi)辟了兩個(gè)空間,與前一個(gè)相比慢多了。所以在開(kāi)發(fā)中絕對(duì)不能使用關(guān)鍵字new實(shí)例化String類。而且,如果直接使用賦值的方式也可以減少堆內(nèi)存的開(kāi)銷。

          posted on 2010-10-16 23:46 Mineralwasser 閱讀(2327) 評(píng)論(4)  編輯  收藏

          FeedBack:
          # re: String的兩種實(shí)例化方式的區(qū)別
          2011-04-25 17:01 | 曾國(guó)泰
          筆試碰到了這道題。。悲劇了。。哎。。  回復(fù)  更多評(píng)論
            
          # re: String的兩種實(shí)例化方式的區(qū)別
          2012-02-12 10:51 | Ma
          你對(duì)string分析得很具體,到位.  回復(fù)  更多評(píng)論
            
          # re: String的兩種實(shí)例化方式的區(qū)別
          2015-09-25 15:25 | jjx
          講的很好。  回復(fù)  更多評(píng)論
            
          # re: String的兩種實(shí)例化方式的區(qū)別
          2016-07-02 11:07 | 小學(xué)員
          String a=new String();
          a="hello";
          為何不報(bào)錯(cuò)?  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          文章檔案(21)

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 高尔夫| 梅河口市| 华坪县| 民和| 铜山县| 惠水县| 肇源县| 来宾市| 绵阳市| 隆林| 延庆县| 涿州市| 天镇县| 白银市| 临安市| 高安市| 兴宁市| 安陆市| 鄂伦春自治旗| 邯郸市| 墨脱县| 清丰县| 河北省| 渝北区| 石城县| 闽清县| 新民市| 岗巴县| 淮南市| 嘉黎县| 临海市| 常德市| 疏勒县| 临朐县| 开阳县| 健康| 河曲县| 蚌埠市| 开封县| 嘉鱼县| 大埔县|