String StringBuffer StringBuilder的區(qū)別

工作1-3年的小伙伴應(yīng)該碰到無數(shù)次的一道面試題:

“String StringBuffer StringBuilder的區(qū)別是什么”

String 我相信大家已經(jīng)不陌生了义图,開發(fā)中應(yīng)該都離不開操作字符串拄显。等等一系列的操作與存儲(chǔ)
理解String 底層原理對(duì)于項(xiàng)目優(yōu)化起著很重要的作用卵史。

首先大家都知道String 是被final 修飾的 所有屬性也都是final 修飾的,保證了基礎(chǔ)線程安全痛黎,因?yàn)槟銓?duì)他的內(nèi)部數(shù)據(jù)無法進(jìn)行修改予弧。由于不可變?cè)赾opy數(shù)據(jù)的時(shí)候不需要額外的復(fù)制數(shù)據(jù),String的不可變?cè)O(shè)計(jì)也就是說在拼接湖饱、截?cái)嗟倪^程當(dāng)中掖蛤,都會(huì)產(chǎn)生新的String對(duì)象

JAVA 在避免過多String 對(duì)象產(chǎn)生過多的時(shí)候,引入了字符串常量池井厌。運(yùn)行機(jī)制是:在生成String 對(duì)象的時(shí)候會(huì)去找常量池里面是否有相同字符串蚓庭,如果有則把池子內(nèi)的對(duì)象引用拿出來,如果沒有那么會(huì)生成新的對(duì)象仅仆。以上說法只存在于直接給String 賦值的時(shí)候器赞,那么使用new String() 則不會(huì)去判斷池中是否會(huì)存在,則直接在堆和棧中生成新的引用和對(duì)象墓拜。

String a = "abc"
String b = new String("abc");

常量池的設(shè)計(jì) 可以節(jié)省同一字符串出現(xiàn)多次節(jié)省內(nèi)存空間港柜。
在項(xiàng)目過程中盡量的避免使用String與String的拼接,垃圾回收將會(huì)消費(fèi)大量的時(shí)間與內(nèi)存

接下來說到StringBuffer和StringBuilder
其實(shí)StringBuffer和StringBuilder 沒有本質(zhì)的區(qū)別咳榜,并且共同繼承AbstractStringBuilder類
并且底層存儲(chǔ)和String一樣夏醉,都是一個(gè)char數(shù)組,但是不同的是他們的內(nèi)容是可變的涌韩。
而它們的默認(rèn)大小是16(JDK8)如果在字符串長度大于16的時(shí)候那么會(huì)進(jìn)行擴(kuò)容畔柔。
如果在開發(fā)當(dāng)中能預(yù)估大小那么可以先預(yù)設(shè)char數(shù)組的長度,減少擴(kuò)容的開銷

大家可以去看源碼贸辈,StringBuffer和StringBuilder 在方法和屬性幾乎一致释树,StringBuffer 所有方法都用到了synchronized修飾肠槽,多線程的情況下能保證線程安全問題擎淤。同時(shí)也體現(xiàn)StringBuffer的性能遠(yuǎn)低于StringBuilder
在單線程環(huán)境當(dāng)中建議是使用StringBuilder減少同步鎖的開銷

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奢啥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子嘴拢,更是在濱河造成了極大的恐慌桩盲,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件席吴,死亡現(xiàn)場(chǎng)離奇詭異赌结,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)孝冒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門柬姚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人庄涡,你說我怎么就攤上這事量承。” “怎么了穴店?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵撕捍,是天一觀的道長。 經(jīng)常有香客問我泣洞,道長忧风,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任球凰,我火速辦了婚禮狮腿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呕诉。我一直安慰自己缘厢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著心赶,像睡著了一般馋吗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上夜畴,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音删壮,去河邊找鬼贪绘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛央碟,可吹牛的內(nèi)容都是我干的税灌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼菱涤!你這毒婦竟也來了苞也?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤粘秆,失蹤者是張志新(化名)和其女友劉穎如迟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體攻走,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡殷勘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昔搂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玲销。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖摘符,靈堂內(nèi)的尸體忽然破棺而出贤斜,到底是詐尸還是另有隱情,我是刑警寧澤议慰,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布蠢古,位于F島的核電站,受9級(jí)特大地震影響别凹,放射性物質(zhì)發(fā)生泄漏草讶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一炉菲、第九天 我趴在偏房一處隱蔽的房頂上張望堕战。 院中可真熱鬧,春花似錦拍霜、人聲如沸嘱丢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽越驻。三九已至,卻和暖如春道偷,著一層夾襖步出監(jiān)牢的瞬間缀旁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工勺鸦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留并巍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓换途,卻偏偏與公主長得像懊渡,于是被迫代替她去往敵國和親刽射。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 廢話不多說剃执,自己進(jìn)入今天的主題 1誓禁、面向?qū)ο蟮奶卣饔心男┓矫妫?答:面向?qū)ο蟮奶卣髦饕幸韵聨讉€(gè)方面: - 抽象:...
    傳奇內(nèi)服號(hào)閱讀 2,355評(píng)論 1 31
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法忠蝗,內(nèi)部類的語法现横,繼承相關(guān)的語法漓拾,異常的語法阁最,線程的語...
    子非魚_t_閱讀 31,662評(píng)論 18 399
  • String 的聲明 由 JDK 中關(guān)于String的聲明可以知道: 不同字符串可能共享同一個(gè)底層char數(shù)組,例...
    CodeKing2017閱讀 1,643評(píng)論 1 2
  • 前言 RTFSC (Read the fucking source code )才是生活中最重要的骇两。我們天天就是要...
    二毛_coder閱讀 457評(píng)論 1 1
  • 今天我們來講一點(diǎn)追高價(jià)值女生的思維速种。 那么說到高價(jià)值,有很多的方式可以去展示低千。而我今天要教給大家的配阵,是一種高價(jià)值的...
    luke盧克閱讀 279評(píng)論 0 0