String、StringBulider和StringBuffer
1 String 是不可變的(String對象具有只讀特性)String對象實際上是不可變的。String類中每一個對String的操作其實都是新生成一個String對象。原來的String對象是沒有改變而且存在在物理內存上的。
特點:在傳遞參數的時候,參數是為方法提供信息而不希望本身被修改的。
2 StringBuilder 對象是可變的
在通過追加、移除、替換或插入字符而創建它后可以對它的對象本身進行修改。
特點:可以避免頻煩地修改String而導致需要耗費大量內存存儲String對象(中間過程的String往往是無用的);但是在多線程的時候使用StringBuilder則是不安全的。建議使用StringBuffer 。
3 StringBuffer 線程安全的可變字符序列
它是一個類似于 String的字符串緩沖區,但不能修改。雖然在任意時間點上它都包含某種特定的字符序列,但通過某些方法調用可以改變該序列的長度和內容。可將字符串緩沖區安全地用于多個線程。可以在必要時對這些方法進行同步,因此任意特定實例上的所有操作就好像是以串行順序發生的,該順序與所涉及的每個線程進行的方法調用順序一致。
總結:
String :對象不可變。
StringBuilder:對象可變,速度快,但多線程不安全。
StringBuffer :對象可變,速度較StringBuilder慢,但多線程安全。