[Android面試題-6] 有關String,StringBuffer,StringBuilder類

來源:互聯網
上載者:User

題目:請簡單描述一下String,StringBuffer和StringBuilder的區別,並解釋一下為什麼String是不可變的。

分析:對於以上三個關於字串的類,主要區別如下:

String:字串常量,其屬性為final。

StringBuffer:字串變數,安全執行緒。

StringBuilder:字串變數,非安全執行緒。

1.String和StringBuffer的區別主要在於String是不可變的,執行如下代碼:

String a = "1";a = a + "2";        StringBuffer b = new StringBuffer("2");b.append("3");

對於與a來說,當執行a = a + "2";之後,實際上JVM產生了一個新的String對象,然後將a指向新的對象,表面上看起來沒有什麼特別的,但是底層其實執行了較多的記憶體操作,所以對於那些需要經常變化的字串,最好不要用String;對於b來說,append操作只是在原來的字串後面添加了一個字元,所以經常變換內容的字串建議使用StringBuffer。

2.StringBuffer和StringBuilder的主要區別在與安全執行緒方面。

StringBuilder是非安全執行緒的,但是它的效率要比Buffer高,所以在單線程操作的情況下,最好用StringBuilder替代StringBuffer。

由於筆者水平有限,給各面試題提供的思路或代碼難免會有錯誤,還請讀者批評指正。另外,熱忱歡迎讀者能夠提供更多、更好的面試題,本人將感激不盡。如有任何意見或建議,歡迎在評論中告知。
博主徐方磊對本部落格文章享有著作權。網路轉載請註明出處http://blog.csdn.net/shishengshi。整理出版物請和作者聯絡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.