2015年6月25日 星期四

[Java] 釐清String的一些小觀念

許多人在Java處理字串應該都是使用String這個物件。

但是String事實上有一些小問題存在,那就是當你的字串若是時常會更改時,建議不要使用。

我會比較推薦你使用StringBuilder來代替String。

為什麼會這麼說呢? 你可以參考一下以下的程式碼。

這段程式碼做了什麼樣的事情呢,創建一個字串存入AB,在把CD加入到這個字串的後面。

你可能會認為他是做了這樣的事情。












把str這個物件裡面的值更改成ABCD,但是事實上卻不是這樣。

事實上他是做了這樣的事情。






















String並不是在原本的物件裡面做修改,而是創一個新的物件,在把指針指過去,

原本的物件就留在記憶體,等GC去清除。

這樣看起來似乎有很大的問題沒錯吧,因此若是你的字串需要大量修改的話,建議不要使用String。

在這邊做一個小實驗試試看。

用String做一萬次字串相加,看看會花費多少的時間。

大概會花費1.5~2秒的時間,也就是1500~2000ms。

這時候我們試試看使用StringBuilder做一樣的事情要花多久。

答案是,只要大概1~2ms就可以了,因為他做這件事不會new一個新的物件出來,因此比較快。

String雖然好用,但是若是你的字串時常需要修改的話,就必須特別注意了。