String,String StringBuffer,StringBuilder該怎么用?

String

? 源碼


String類

?如上源碼,String被聲明成了final類,因此不能再繼承;實(shí)現(xiàn)了Serializable(序列化)、Comparable(比較)、CharSequence(字符序列)

  • Serializable
    ?可序列化類的所有子類型本身可序列化。 序列化接口沒有方法或字段
    并且僅用于識(shí)別可序列化的語義。
  • Comparable
    ?Comparable接口對(duì)實(shí)現(xiàn)該接口的每個(gè)類的對(duì)象強(qiáng)加了總體排序。 此排序稱為類的自然排序。并且Comparable類的compareTo方法被稱為其自然比較方法可以通過Collections.so、Arrays.sort, 實(shí)現(xiàn)此接口的對(duì)象可以用作SortedMap排序圖中的鍵,也可以用作SortedSet排序集中的元素,而無需指定Comparator比較器。
  • CharSequence
    ?CharSequence是char值的可讀序列。 這個(gè)接口提供對(duì)許多不同種類的char序列的統(tǒng)一只讀訪問。一個(gè)char值代表Basic中的Multilingual Plane(一個(gè)字符多語言平面BMP)或替代。

StringBuffer

? 源碼


StringBuffer

? StringBuffer也實(shí)現(xiàn)了Serializable、CharSequence,但它繼承了AbstractStringBuilder。

  • AbstractStringBuilder
    ? AbstractStringBuilder可變的字符序列。實(shí)現(xiàn)可修改的字符串。字符的長度和內(nèi)容可以通過特定的方法調(diào)用來更改順序。

StringBuilder

? 源碼


StringBuilder

?StringBuilder的字符序列是可變的。 此類提供了與API兼容的使用StringBuffer,但不能保證同步。此類設(shè)計(jì)用于替代。StringBuffer在字符串緩沖區(qū)所在的位置由單個(gè)線程使用(通常是這種情況)。 在可能的情況,建議優(yōu)先使用此類。StringBuffer,因?yàn)樵诖蠖鄶?shù)實(shí)現(xiàn)中它將更快。

【敲黑板時(shí)間到】:

    • 是否可變
      ?String是不可變的,StringBuffer與StringBuilder是可變的。
    • 是否線程安全
      ?String 中的對(duì)象是不可變的,可以理解為常量,是線程安全。AbstractStringBuilder 是 StringBuilder 與 StringBuffer 的公共父類,定義了一些字符串的基本操作,如 expandCapacity、append、insert、indexOf 等公共方法。StringBuffer 對(duì)方法加了同步鎖或者對(duì)調(diào)用的方法加了同步鎖,所以是線程安全的。StringBuilder 并沒有對(duì)方法進(jìn)行加同步鎖,所以是非線程安全的。
    • 性能差異
      ?每次對(duì) String 類型進(jìn)行改變的時(shí)候,都會(huì)生成一個(gè)新的 String 對(duì)象,然后將指針指向新的 String 對(duì)象。StringBuffer 每次都會(huì)對(duì) StringBuffer 對(duì)象本身進(jìn)行操作,而不是生成新的對(duì)象并改變對(duì)象引用。相同情況下使用 StringBuilder 相比使用 StringBuffer 僅能獲得 10%~15% 左右的性能提升,但卻要冒多線程不安全的風(fēng)險(xiǎn)

【怎么使用】
? - 操作少量的數(shù)據(jù): 適用String
? - 單線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù): 適用StringBuilder
? - 多線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù): 適用StringBuffer

====END====

聲明:原創(chuàng),歡迎轉(zhuǎn)載~! 幫忙點(diǎn)關(guān)注我,謝謝~!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容