把困難踩在腳下

          迎難而上

           

          String 對象

          1.String對象賦值的方法:
          String對象賦值有兩種方法,第一種方法是直接對變量進行賦值,例如:String str="abc";這種方法非常簡單。第二種方法是使用new函數進行賦值,例如:String str=new String("abc");這種方法將產生兩個String對象,因為"abc"本身就是一個字符串,這個對象是一個匿名對象,進行new函數又產生一個新的String對象,它在內存中的存儲方式如下圖所示:

          這個程序在堆內存中開辟了兩塊空間,每塊空間的內容都是字符串"abc"。
          這種賦值方法非常浪費內存,如果對象很多的時候那么程序的可行性非常差,所以不提倡使用這種方法進行賦值。
          2.Sring對象的共享特性:
          如果在一個程序中聲明了兩個String變量,采用直接賦值的方法將同一個字符串付給這兩個變量,那么這兩個變量將同時指向這個變量,在

          堆內存中為這兩個變量只分配一塊內存空間,例如:String str1="abc";String str2="abc";它的內存存儲形式如下圖所示:


          這個程序在堆內存中只開辟了一塊內存空間,空間的內容是"abc"。
          3.String對象內容的不變性:
          如果聲明一個String變量并未這個變量賦值,那么就會在堆內存中為這個對象開辟一塊內存空間來存放對象的值,之后無論怎樣改變這個對

          象的值都不會改變,但是可以改變對象的指向。例如:
          String str="abc";
          str+="def";執行
          System.out.println(str);
          將輸出:
          abcdef
          這個程序在內存中的存儲過程如圖所示:


          執行第一條語句在堆內存中開辟了一塊內存空間,內容是字符串"abc",執行第二條語句:因為字符串"def"本身就是一個String對象,所以

          先在堆內存空間中開辟另一塊內存空間,空間內容是字符串"def",然后再開辟一塊內存空間是兩個字符串的和,也就是字符串"abcdef",

          其次將str與字符串"abc"的指向斷開,將str指向字符串"abcdef"。

           

          posted on 2010-10-16 21:28 馮魁 閱讀(283) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          快樂每一天!

          Everything is an object!

          常用鏈接

          留言簿(2)

          隨筆檔案

          學習網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 青铜峡市| 滦平县| 沾化县| 洛南县| 洪雅县| 龙井市| 湟中县| 青浦区| 望谟县| 海兴县| 临泉县| 万宁市| 图们市| 建瓯市| 武陟县| 堆龙德庆县| 济宁市| 仁寿县| 南雄市| 英德市| 上蔡县| 洞口县| 临沂市| 锡林浩特市| 什邡市| 石阡县| 石城县| 泗阳县| 通化县| 玛曲县| 台前县| 通辽市| 应城市| 甘孜| 武穴市| 介休市| 恩施市| 湟中县| 徐州市| 上蔡县| 铜梁县|