1. 程式人生 > 其它 >Java-23.2 String,StringBuffer,StringBuilder的區別

Java-23.2 String,StringBuffer,StringBuilder的區別

1、String,StringBuffer,StringBuilder的區別
  1、String的內容不可變,而StringBuffer和StringBuilder的內容是可變的
  2、StringBuffer是同步執行緒安全的,資料安全,效率低
    StringBuilder是不同步的,執行緒不安全,資料不安全,效率高

2、StringBuffer和陣列的區別:

  1、它們兩個都可以被看作是一個容器,裝一些資料

  2、但是StringBuffer裡面的資料都是字串資料,陣列可以存放不同資料型別的資料,但是同一個陣列只允許存放同一型別的資料

3、String類和StingBuffer類當做引數傳遞時的區別:

/*
        看程式寫結果:
            String作為引數傳遞
                傳遞的是值,對外面本身變數的值沒有任何影響。
            StringBuffer作為引數傳遞
                只有當誰有操作的時候,那個StringBuffer才會變化,因為方法消失前對緩衝池進行了操作
 */

public class StringBufferText5 {
    public static void main(String[] args) {
        String s1 
= "hello"; String s2 = "world"; System.out.println(s1==s2);//false System.out.println(s1 + "--" + s2); //hello--world change(s1, s2); System.out.println(s1 + "--" + s2); //hello--world StringBuffer sb1 = new StringBuffer("hello"); StringBuffer sb2 = new
StringBuffer("world"); System.out.println(sb1==sb2);//false System.out.println(sb1+"---"+sb2); //hello--world change2(sb1,sb2); System.out.println(sb1+"---"+sb2); //hello--worldworld } public static void change2(StringBuffer sb1,StringBuffer sb2){ sb1 = sb2; sb2.append(sb1); System.out.println(sb1==sb2);//true System.out.println(sb1+"***"+sb2);//worldworld***worldworld } public static void change(String s1, String s2) { s1 = s2; s2 = s1 + s2; System.out.println(s1+"---"+s2);//world--worldworld } }