✔ 最佳答案
最直接的解釋就是根據Javadoc上寫的定義:
A string buffer implements a mutable sequence of characters
java.lang.String 是一個immutable sequence of characters,它的值是不能被改變的。因為不能被改變,所以不能加長,也就避免了buffer overrun之類的問題。
(在Java最開始的設計中,安全性是很重要的一環,因為要讓Java程式上網頁上run)
但不能改變的String如何操作呢,它是通過創做新的String Object。我們留意一下這個method:
String replace(char oldChar, char newChar)
它就是傳回另一個String Object,這個設計就能避免一些問題。
但是這個設計也有它的缺陷,就是String Object太多。Java的設計師也意識到這個問題而進行了優化,而StringBuffer就是一個可以讓programmer使用的一個工具。如果有一個String要由大量string object合拼,它提供一個可增長的Buffer。
正確使用方法
StringBuffer sb = new StringBuffer();
sb.append('a');
sb.append('b');
sb.append('c');
sb.append('d');
String abcd = sb.toString();
如果寫 String abcd = "a" + "b" + "c" + "d";
那就會多做一個string object了,如果String的object不止四個,那就會做了很多無謂的object,這些object都會為Garbage Collector帶來壓力,程式在Garbage Collection的過程中都不能動,所以有時候Java的Program看起來比較慢就是這個原因。