在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的是返回新的對象。