private final char value[]; final 不可變的StringBuilder/Buffer —> char value[] 可變的String設(shè)計成不可變原因 -> 多個指..."/>
溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java基礎(chǔ) (3) - String/StringBuilder/Buffer StringFor

發(fā)布時間:2020-07-10 06:32:10 來源:網(wǎng)絡(luò) 閱讀:155 作者:lm8751 欄目:編程語言

區(qū)別
1.可變與不可變
String —> private final char value[]; final 不可變的
StringBuilder/Buffer —> char value[] 可變的
String設(shè)計成不可變原因 -> 多個指引指向同一個內(nèi)存空間,如任意指引修改,值將改變,其它引用也將改變。

2.是否多線程安全
String —> 安全 (不可變對象)
StringBuilder —> 不安全
StringBuffer —> 安全

3.性能
1.StringBuilder > StringFormat StringFormat內(nèi)部也是StringBuilder AppendFormat實現(xiàn)的。(當(dāng)數(shù)據(jù)量小的時候 性能差距不是很明顯)
2.StringBuilder大概比Buffer快15% 。
3.“A” + “b” 系統(tǒng)編譯的時候自動轉(zhuǎn)換成 new StringBuilder.append(“a”).append(“b”);

4.使用上
StringBuilder 默認(rèn)情況是16個字節(jié)。當(dāng)內(nèi)容超過指定大小,StringBuilder會擴容 (2*原大小+2)。因此根據(jù)業(yè)務(wù)需求指定合適的大小很重要(避免多次 復(fù)制成本和申請內(nèi)存空間 ),一般情況下字符占2個字節(jié) 中文占2~4個字節(jié)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI