java字串抉擇

來源:互聯網
上載者:User

標籤:

下面我們就字串串連方面分析。

1.String

開啟String的源碼,

會發現儲存字串的字元數值是final常量。再看String的構造方法,發現String的value值在構造方法就確定了值。這裡有必要說明下關鍵字final

final修飾的屬性為常量(值不可改變),要麼在聲明的同時賦值,要麼在構造方法裡面進行賦值,一旦賦值就不能改變。

所以,用String來實現字串拼接,由於String的值不可改變,所以每次拼接都要產生一個新的String來儲存新的字串。所以使用String來處理字串拼接效能會很低。

更多String的資訊,可以參考部落格:http://longpo.iteye.com/blog/2199493

2.StringBuffer

StringBuffer類繼承了抽象類別 AbstractStringBuilder類,開啟AbstractStringBuilder源碼

再來StringBuffer看看重載的三個構造方法

發現都是調用父類AbstractStringBuilder的構造方法

發現StringBuffer的儲存資料的char數組不是final類型的,說明可以變更,且構建出來的字串都還有空餘的位置來拼接字串。

在StringBuffer中我們使用append()函數來進行字串的拼接。我們可以想到雖然char數組還有剩餘,但一直拼接肯定也不夠用。所以有必要看看append函數的源碼實現。

查看其父類AbstractStringBuilder的append方法

發現當value數組容量不夠時,會建立一個新的value數組來儲存字串。到這裡就應該明白了StringBuffer字串拼接的原理啦。當char value數組不夠時會建立個更大容量的數組來儲存。效率明顯比String高。

3.StringBuilder

StringBuilder和StringBuffer是兩兄弟,用法基本一樣,不同的是StringBuffer是同步的,安全執行緒的,而StringBuilder不保證同步,線程不安全。

StringBuilder在大多數實現中比StringBuffer快, 在字串緩衝區被單個線程訪問時,建議優先使用StringBuilder

技術分享:www.kaige123.com

java字串抉擇

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.