StringBuffer和StringBuilder
- 2021 年 8 月 12 日
- 筆記
- Java進階03——常見API
StringBuffer和StringBuilder
String類的缺點:
String 是一個不可變的數據類型,每每拼接都會產生一個新的字符串,那麼內存遲早會被這些拼接的字符串塞滿。
String類和StringBuilder和StringBuffer類的區別:
StringBuilder和StringBuffer:可變的字符串,不產生新對象,比較省內存,當進行大量的字符串拼接時建議使用StringBuffer和StringBuilder,但它們兩個一些方法的實現幾乎跟String一樣。
StringBuffer和StringBuilder類:
【相似點】
兩者用法一模一樣,可以認為是一個類
【區別】
-
StringBuffer線程安全,StringBuilder非線程安全。
-
StringBuilder相比於StringBuffer有速度優勢,多數情況下建議使用StringBuilder類,但當被要求線程安全時必須使用StringBuilder類
StringBuffer和StringBuilder 轉成String類
StringBuilder sb = new StringBuilder("貓喜歡吃魚"); String s = sb.toString();
【參考代碼】
package String;
public class TestStringBuilder {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();// 一個空的字符串""
StringBuilder sb2 = new StringBuilder("貓喜歡吃魚");
System.out.println(sb2);// 貓喜歡吃魚
sb2.append(",狗也喜歡吃魚");
System.out.println(sb2);// 追加 貓喜歡吃魚,狗也喜歡吃魚
sb2.insert(1,"哈哈哈");
System.out.println(sb2); //貓哈哈哈喜歡吃魚,狗也喜歡吃魚
// 上述的操作huan'c
// 把StringBuilder轉化成String
String s = sb2.toString();
System.out.println(s); //貓哈哈哈喜歡吃魚,狗也喜歡吃魚
// 上述操作都可以將StringBuilder換成StringBuffer,結果一樣
}
}