什麼是字符串(String)的不變性?

    在Java中我們用的最多的對象類型恐怕就是String了。關於String有一個不變性的特性,什麼是字符串的不變性呢?下面有一系列的介紹!

一、申明一個字符串

    String s = “abcd”; 其中s存儲了一個字符串對象的引用,如下圖所示:



二、將一個字符串變量賦值給另一個字符串變量

 String s2 = s;其中s2存儲了和s一樣的引用。因此他們是指向同一個字符串對象,如下圖:

 

三、合併多個字符串

 s = s.concat(“ef”);現在s存儲的是新創建的對象的引用。       

               (注意,上面一個s是指s2)

總結:

    一但一個字符串在堆內存創建,它是不能被改變的,我們應該注意所有的關於String類的方法不是改變一個字符串本身,而是重新返回一個新的字符串。如果我們需要一個頻繁的改變一個字符串對象,我們可以使用StringBuffer或者StringBuilder,否則將會浪費大量時間進行垃圾回收,因爲每次創建一個新的字符串。不過需要注意的是,貌似JDK1.7之前不是所有的方法都是返回新對象,1.7的是返回新的對象。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章