面試精選4-StringBuffer,StringBuilder開(kāi)發(fā)中如何做選擇?
2022-09-22 10:17 作者:架構(gòu)風(fēng)清揚(yáng)-趣學(xué)旅程 | 我要投稿

首先,String 跟其他兩個(gè)類(lèi)的區(qū)別是
String是final類(lèi)型,每次聲明的都是不可變的對(duì)象,
所以每次操作都會(huì)產(chǎn)生新的String對(duì)象,然后將指針指向新的String對(duì)象。
StringBuffer,StringBuilder都是在原有對(duì)象上進(jìn)行操作
所以,如果需要經(jīng)常改變字符串內(nèi)容,則建議采用這兩者。
StringBuffer vs StringBuilder
前者是線(xiàn)程安全的,后者是線(xiàn)程不安全的。
線(xiàn)程不安全的StringBuilder性能更高,所以在開(kāi)發(fā)中,優(yōu)先采用StringBuilder.
StringBuilder > StringBuffer > String
注意:
我們?cè)陂_(kāi)發(fā)中為什么會(huì)選擇StringBuilder?
這個(gè)要看場(chǎng)景,有同學(xué)說(shuō)可以為了性能放棄安全,這是不對(duì)的。
大家想想,什么情況下需要考慮線(xiàn)程安全的問(wèn)題?
有一個(gè)前提條件就是:多線(xiàn)程訪(fǎng)問(wèn)同一個(gè)資源,且有更新操作
所以,只要不是這樣的場(chǎng)景,我們就可以放心使用StringBuilder
而我們?cè)陂_(kāi)發(fā)中,通常使用StringBuilder在方法內(nèi)來(lái)創(chuàng)建對(duì)象和拼接信息,而這種情況是一個(gè)線(xiàn)程對(duì)應(yīng)一個(gè)StringBuilder對(duì)象
視頻解讀版:
標(biāo)簽: