StringBuilder 沒(méi)有提供clear或empty方法。
清空有3種方法:
1)新生成一個(gè),舊的由系統(tǒng)自動(dòng)回收
2)使用delete
3)使用setLength
在String你還需要知道這些細(xì)節(jié)中提到過(guò),由于String被設(shè)計(jì)成immutable,所以才有了StringBuilder和StringBuffer這2個(gè)類來(lái)幫助我們操作字符串,StringBuilder線程不安全,StringBuffer線程安全,在我們大多數(shù)日常使用場(chǎng)景,都是單線程操作字符串,所以StringBuidler用的會(huì)多一些,而且編譯器也會(huì)默認(rèn)幫我們將+號(hào)字符串拼接轉(zhuǎn)化為StringBuidler append,這篇文章我會(huì)跟大家分享我知道的StringBuilder使用的一些騷操作。
底層數(shù)據(jù)結(jié)構(gòu)很簡(jiǎn)單,就是一個(gè)char[] value 和大小字段 count,構(gòu)造器生成的char[] 默認(rèn)capacity大小是16,如果很明確插入的字符串很長(zhǎng),應(yīng)該將capacity設(shè)置大一些,避免頻繁拷貝數(shù)組擴(kuò)容。
append和insert方法都能增長(zhǎng)字符串,該如何選擇,看上面的源碼可以看到,insert不論字符串插入的位置是在中間還是最后,都會(huì)進(jìn)行數(shù)組拷貝,而append則會(huì)根據(jù)當(dāng)前數(shù)組的長(zhǎng)度來(lái)判斷是否需要拷貝擴(kuò)容,所以如果需要在尾部增加字符串使用append,其他位置使用insert。