一起學(xué)JDK源碼 -- StringBuilder類

查看所有目錄
StringBuilder從類名語義上來說String構(gòu)建者母蛛,用來創(chuàng)建String的捌锭。在java開發(fā)中經(jīng)常用到String處理字符串,但String對象是一個常量洗贰,一旦創(chuàng)建后不能改變,所以無法對其進(jìn)行修改操作顶滩,對String對象的操作,實際上是不斷的創(chuàng)建新的String對象寸爆。為了使字符串可以改變礁鲁,java引入了可變的字符串StringBuild類。

定義:

public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence{}

StringBuilder繼承自AbstractStringBuilder類赁豆,是final類型的仅醇,不能再被其它類繼承。實現(xiàn)了Serializable和CharSequence接口魔种。

構(gòu)造方法:

無參構(gòu)造方法:

    public StringBuilder() {
        super(16);
    }

無參構(gòu)造方法析二,調(diào)用了父類的構(gòu)造方法,初始容量為16個字符.

String參數(shù)構(gòu)造方法:

    public StringBuilder(String str) {
        super(str.length() + 16);
        append(str);
    }

一個String參數(shù)的構(gòu)造方法节预,初始容量為字符串長度加16個字符.

CharSequence參數(shù)構(gòu)造方法:

    public StringBuilder(CharSequence seq) {
        this(seq.length() + 16);
        append(seq);
    }

CharSequence參數(shù)的構(gòu)造方法叶摄,同String參數(shù)的構(gòu)造方法類似。

其它方法:

writeObject:

    private void writeObject(java.io.ObjectOutputStream s)
        throws java.io.IOException {
        s.defaultWriteObject();
        s.writeInt(count);
        s.writeObject(value);
    }

在進(jìn)行序列化的時候保存StringBuilder對象的狀態(tài)到一個流中安拟。

readObject:

    private void readObject(java.io.ObjectInputStream s)
        throws java.io.IOException, ClassNotFoundException {
        s.defaultReadObject();
        count = s.readInt();
        value = (char[]) s.readObject();
    }

反序列化時從流中獲取StringBuild對象序列化之前的狀態(tài)蛤吓。

toString:

    public String toString() {
        // Create a copy, don't share the array
        return new String(value, 0, count);
    }

返回StringBuilder對象的字符串形式,創(chuàng)建了一個新的字符串對象去扣,代碼注釋說了創(chuàng)建一個副本柱衔,而不要去共享這個內(nèi)部維護(hù)的數(shù)組,因為返回的是String對象愉棱,不可變的唆铐,如果返回了數(shù)組的共享,在改變StringBuilder對象時奔滑,String對象的內(nèi)容隨之改變艾岂,這就破壞了String對象的不可變性。

StringBuilder類中其它的方法都是重寫了父類中的方法朋其,調(diào)用了父類的實現(xiàn)王浴。具體實現(xiàn)可查看基父類AbstractStringBuilder,這里就不再列出了梅猿。需要注意一點的是StringBuilder是線程不安全的氓辣,在單線程程序中使用效率會高很多。在多線程程序中要慎用袱蚓。

查看所有目錄

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钞啸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子喇潘,更是在濱河造成了極大的恐慌体斩,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颖低,死亡現(xiàn)場離奇詭異絮吵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)忱屑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蹬敲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人莺戒,你說我怎么就攤上這事粱栖。” “怎么了脏毯?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵闹究,是天一觀的道長。 經(jīng)常有香客問我食店,道長渣淤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任吉嫩,我火速辦了婚禮价认,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘自娩。我一直安慰自己用踩,他們只是感情好渠退,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脐彩,像睡著了一般碎乃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惠奸,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天梅誓,我揣著相機(jī)與錄音,去河邊找鬼佛南。 笑死梗掰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嗅回。 我是一名探鬼主播及穗,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绵载!你這毒婦竟也來了拥坛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤尘分,失蹤者是張志新(化名)和其女友劉穎猜惋,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體培愁,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡著摔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了定续。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谍咆。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖私股,靈堂內(nèi)的尸體忽然破棺而出摹察,到底是詐尸還是另有隱情,我是刑警寧澤倡鲸,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布供嚎,位于F島的核電站,受9級特大地震影響峭状,放射性物質(zhì)發(fā)生泄漏克滴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一优床、第九天 我趴在偏房一處隱蔽的房頂上張望劝赔。 院中可真熱鬧,春花似錦胆敞、人聲如沸着帽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仍翰。三九已至赫粥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間歉备,已是汗流浹背傅是。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工匪燕, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蕾羊,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓帽驯,卻偏偏與公主長得像龟再,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尼变,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

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

  • 查看所有目錄String類是我們?nèi)粘i_發(fā)中使用最頻繁的類之一利凑,曾今有人說String類用的好壞能評判你是否是一個合...
    Kinsanity閱讀 5,669評論 0 3
  • 我站在烈日下看書風(fēng)悠悠的嘆息像小提琴的曲調(diào)很多事情就像清零了一樣而你也,從未發(fā)生過這晴天的溫暖如人的壽命短到?jīng)]有時...
    梅涼閱讀 1,607評論 65 88
  • 【編號】6611 【姓名】 李志非 【城市】 鶴壁 【職業(yè)】 小學(xué)數(shù)學(xué)教師 【公眾號】 阿飛事務(wù)所(afeiws)...
    9c80a2f86c0f閱讀 129評論 0 0
  • 失信即破產(chǎn) 曝光一個老賴:李紀(jì)軒男65年平頂山人,08年在湖北宜城投資一家企業(yè)度气,因資金短缺向朋友借錢割按,朋友又向他人...
    信立天下閱讀 477評論 0 0
  • 序言第1章 Scrapy介紹第2章 理解HTML和XPath第3章 爬蟲基礎(chǔ) 第4章 從Scrapy到移動應(yīng)用第5...
    SeanCheney閱讀 5,364評論 4 10