把困難踩在腳下

          迎難而上

           

          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)

          隨筆檔案

          學習網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 老河口市| 修武县| 韶山市| 汉阴县| 图们市| 赤城县| 饶平县| 霍城县| 黄冈市| 巫溪县| 合肥市| 上思县| 思茅市| 西畴县| 若羌县| 镇原县| 桦南县| 普安县| 防城港市| 安顺市| 武冈市| 宁德市| 象山县| 周宁县| 凉山| 海兴县| 施秉县| 姜堰市| 库伦旗| 武山县| 辉县市| 湘西| 古浪县| 乾安县| 宁强县| 宁河县| 锦州市| 宁夏| 自治县| 绿春县| 乌鲁木齐县|