String、StringBuilder、StringBuffer、CharSequence 區(qū)別

  • CharSequence接口:是一個字符序列,string,stringbuffer,stringbuilder都實現(xiàn)了該接口
  • string類是常量,不可變。
  • stringbuffer類:可在多線程的情況下進行改變
  • stringbuilder類:只能在單線程下進行修改
  • stringbuilder比stringbuffer效率高,建議多使用stringbuilder。

1.CharSequence是一個java接口,代表一個char序列,String、StringBuilder、StringBuffer都實現(xiàn)了該接口,CharSequence實例通過調(diào)用toString方法可轉(zhuǎn)化為String對象。
2.String類是final的,不可派生子類,其內(nèi)部封裝的是char[],另外,android下的String類和jdk中的String類是有區(qū)別的,android下的String類中部分API通過native方法實現(xiàn),效率相對高一些。
3.String使用'+'進行字符串拼接時,在編譯期會轉(zhuǎn)化為StringBuilder#append方式
4.String在內(nèi)存中有一個常量池,兩個相同的串在池中只有一份實例(String s = "abc"方式或者String#intern方式會在池中分配),使用new String方式會在heap中分配,每次創(chuàng)建都是一個全新的實例。
5.StrigBuilder & StringBuffer都是可擴展的串,提供了一系列apped方法用于拼接不同類型對象
6.StringBuffer于jdk1.0引入,線程安全(多線程場景下使用),StringBuilder于jdk1.5引入,線程不安全,因而效率更高。
7.StringBuilder & StringBuffer初始容量都為16,開發(fā)者應(yīng)該指定其容量,以避免多次擴容所帶來的性能問題。

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

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

  • Java 語言支持的類型分為兩類:基本類型和引用類型。整型(byte 1, short 2, int 4, lon...
    xiaogmail閱讀 1,450評論 0 10
  • 調(diào)用下面的方法,得到的返回值是什么? 代碼在走到第 3 行的時候遇到了一個 MathException,這時第四行...
    某學(xué)渣閱讀 624評論 0 1
  • Tip:筆者馬上畢業(yè)了,準備開始 Java 的進階學(xué)習(xí)計劃。于是打算先從 String 類的源碼分析入手,作為后面...
    石先閱讀 12,109評論 16 58
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,727評論 18 399
  • 隨著互聯(lián)網(wǎng)醫(yī)療的興起,越來越多團隊加入了互聯(lián)網(wǎng)醫(yī)療或大健康領(lǐng)域。而靜下心來思考,互聯(lián)網(wǎng)醫(yī)療到底給患者和醫(yī)生帶來了哪...
    敏敏的期待閱讀 1,051評論 0 2

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