String,Stringbuffer,StringBuilder 的區別

String 字串常量(final修飾,不可被繼承),String是常量,當建立之後即不能更改。(可以透過StringBuffer和StringBuilder建立String物件(常用的兩個字串操作類)。) StringBuffer 字串變數(執行緒安全),其也是final類別的,不允許被繼承,其中的絕大多數方法都進行了同步處理,包括常用的Append方法也做了同步處理(synchronized修飾)。其自jdk1。0起就已經出現。其toString方法會進行物件快取,以減少元素複製開銷。

public synchronized String toString() {

if (toStringCache == null) {

toStringCache = Arrays。copyOfRange(value, 0, count);

}

return new String(toStringCache, true);

}

StringBuilder 字串變數(非執行緒安全)其自jdk1。5起開始出現。與StringBuffer一樣都繼承和實現了同樣的介面和類,方法除了沒使用synch修飾以外基本一致,不同之處在於最後toString的時候,會直接返回一個新物件。

public String toString() {

// Create a copy, don’t share the array

return new String(value, 0, count);

}

作者:消失er

連結:https://www。jianshu。com/p/97e210a6d95a

著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。