網(wǎng)站排名靠前方法網(wǎng)絡(luò)營(yíng)銷推廣的要點(diǎn)
String
使用 String 聲明一個(gè)字符串的時(shí)候,該字符串會(huì)存放在堆中的字符串常量池中。因?yàn)樵趈ava中所有的String 都是以常量表示,且由 final 修飾,因此在線程池中它的線程是安全的 且 不可變的 。每個(gè) String 在被創(chuàng)建后就不再發(fā)生任何變化。
我們?cè)趧?chuàng)建String的時(shí)候,它在常量池中對(duì)這些信息進(jìn)行處理,如果程序中出現(xiàn)了大量字符串拼接、劃分等操作效率將非常低。
因此,使用場(chǎng)景是在少量字符串操作的時(shí)候才建議直接使用。
StringBuilder
StringBuilder 沒有考慮線程安全的問題。雖然執(zhí)行效率高,但是不安全所以不建議在多線程環(huán)境下對(duì)同一個(gè) StringBuilder 對(duì)象進(jìn)行操作。
因此,StringBuilder 適用于單線程環(huán)境下的大量字符串操作。
StringBuffer
StringBuffer 相對(duì)于 StringBuilder 效率要低一些,但遠(yuǎn)比 String 高。
比StringBuffer 效率低的原因:考慮到了多線程的情況,在進(jìn)行字符串操作的時(shí)候 使用 synchronized 關(guān)鍵字對(duì)方法進(jìn)行了同步處理。
因此,StringBuffer 適用于多線程環(huán)境下的大量字符串操作。