String 和StringBuffer 的區別

來源:互聯網
上載者:User

    JAVA 平台提供了兩個類:String 和StringBuffer,它們可以儲存和操作字串,即包含多個字元的字元資料。這個String 類提供了數值不可改變的字串。而這個StringBuffer 類提供的字串進行修改。

    當你知道字元資料要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers 來動態構造字元資料。

    另外,String 實現了equals 方法,new String(“abc”).equals(newString(“abc”) 的結果為true, 而StringBuffer 沒有實現equals 方法, 所以, newStringBuffer(“abc”).equals(new StringBuffer(“abc”)的結果為false。

接著要舉一個具體的例子來說明,我們要把1 到100 的所有數字拼起來,組成一個串。

StringBuffer sbf = new StringBuffer();
for(int i=0;i<100;i++)
{
sbf.append(i);
}
上面的代碼效率很高,因為只建立了一個StringBuffer 對象,而下面的代碼效率很低,因為建立
了101 個對象。
String str = new String();
for(int i=0;i<100;i++)
{
str = str + i;
}
在講兩者區別時,應把迴圈的次數搞成10000,然後用endTime-beginTime 來比較兩者執行的時間差異。

最後還要講講StringBuilder 與StringBuffer 的區別。

String 覆蓋了equals 方法和hashCode 方法,而StringBuffer 沒有覆蓋equals 方法和hashCode 方法,所以,將StringBuffer Object Storage Service進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.