簡單講講String、StringBuffer和StringBuilder的區(qū)別

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

java中String、StringBuffer、StringBuilder是編程中經(jīng)常使用的字符串類,他們之間的區(qū)別也是經(jīng)常在面試中會問到的問題。現(xiàn)在總結(jié)一下,看看他們的不同與相同。

1.可變與不可變

String類中使用字符數(shù)組保存字符串,如下就是,因為有“final”修飾符,所以可以知道string對象是不可變的。

private final char value[];

StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,在AbstractStringBuilder中也是使用字符數(shù)組保存字符串,如下就是,可知這兩種對象都是可變的。

char[] value;

2.是否多線程安全

String中的對象是不可變的,也就可以理解為常量,顯然線程安全。

AbstractStringBuilder是StringBuilder與StringBuffer的公共父類,定義了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。

StringBuffer對方法加了同步鎖或者對調(diào)用的方法加了同步鎖,所以是線程安全的??慈缦略创a:

1 public synchronized StringBuffer reverse() {

2? ? super.reverse();

3? ? return this;

4 }

5

6 public int indexOf(String str) {

7? ? return indexOf(str, 0);? ? ? ? //存在 public synchronized int indexOf(String str, int fromIndex) 方法

8 }

StringBuilder并沒有對方法進(jìn)行加同步鎖,所以是非線程安全的。

3.StringBuilder與StringBuffer共同點

StringBuilder與StringBuffer有公共父類AbstractStringBuilder(抽象類)。

抽象類與接口的其中一個區(qū)別是:抽象類中可以定義一些子類的公共方法,子類只需要增加新的功能,不需要重復(fù)寫已經(jīng)存在的方法;而接口中只是對方法的申明和常量的定義。

StringBuilder、StringBuffer的方法都會調(diào)用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer會在方法上加synchronized關(guān)鍵字,進(jìn)行同步。

最后,如果程序不是多線程的,那么使用StringBuilder效率高于StringBuffer。

最后編輯于
?著作權(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)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,697評論 18 399
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,648評論 0 3
  • 富士山(日文假名:ふじさん,英文:Mount Fuji),是日本國內(nèi)最高峰,日本重要國家象征之一。橫跨靜岡縣和山梨...
    道形圖閱讀 833評論 0 10
  • 安靜的聽著宋冬野的安和橋,聽著他粗獷卻低沉而沙啞的嗓音,多少次都不由自主的想起你Q先生?在我認(rèn)識的人里面,只有你有...
    無光閱讀 149評論 0 0
  • 一天,熊孩子問我:媽媽,怎么樣才能當(dāng)上畫家? 我說:有個叫梵高的家伙畫了張向日葵 后來,他成為了最杰出的畫家! 于...
    懸浮夜的密修閱讀 309評論 0 0

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