1. 程式人生 > 其它 >String、StringBuilder、StringBuffer簡單區別

String、StringBuilder、StringBuffer簡單區別

String、StringBuffer和StringBuilder

同:

  1. 都用來封裝字串;
  2. 實現CharSequence介面

不同

  • string被final修飾,是不可變類,一旦賦值,不可改變;

    • StringBuffer和StringBuilder都繼承自AbstractStringBuilder類,使用字元陣列儲存字串,是可變類;
  • 建立物件初始化時,String可通過

    • String a = new String("abc");
    • String a = "abc";兩種方法進行初始化
    • 而StringBuilder和StringBuffer只能通過new的方法來初始化
  • String字串修改的方式是先建立一個StringBuffer,其次呼叫StringBuffer的append()方法,最後呼叫StringBuffer的toString()方法返回結果;

       String a = "abc";
            a =  a + "d";
            System.out.println(a);
    // a = "abcd";
    

    等同於

       StringBuffer xy = new StringBuffer("abc");
            xy.append("d");
            xy.toString();
            System.out.println(xy);
    // xy = "abcd";
    

    String字串修改的過程要StringBuffer多幾部操作,增加一些臨時物件,從而導致程式碼的效率降低。

    StringBuffer和StringBuilder在修改字串方面要比String的效率高

  • String類實現了equals()方法和hashCode()方法

    StringBuffer類沒有實現equals()方法和hashCode()方法

  • StringBuffer和StringBuiloder都提供了一系列插入、追加、修改字串字元序列等方法,用法基本相同,

    只是StringBuilder是執行緒不安全的,StringBuffer是執行緒安全的

    如果單執行緒使用字串,則StringBuilder的效率高一些,但是當執行緒訪問時,最好使用StringBuffer

在執行效率上,StringBuilder最高,StringBuffer次之,String最低。

如果要運算元量比較小,應優先使用String類;

如果是單執行緒操作大量資料,應優先使用StringBuilder;

如果是在多執行緒操作大量資料,應優先使StringBuffer類