StringBuffer和StringBuilder

StringBuffer和StringBuilder

String類的缺點:

String 是一個不可變的數據類型,每每拼接都會產生一個新的字符串,那麼內存遲早會被這些拼接的字符串塞滿。

String類和StringBuilder和StringBuffer類的區別:

StringBuilder和StringBuffer:可變的字符串,不產生新對象,比較省內存,當進行大量的字符串拼接時建議使用StringBuffer和StringBuilder,但它們兩個一些方法的實現幾乎跟String一樣。

StringBuffer和StringBuilder類:

【相似點】

兩者用法一模一樣,可以認為是一個類

【區別】

  1. StringBuffer線程安全,StringBuilder非線程安全。

  2. 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,結果一樣

    }
}