Java字符串大家庭主要包括 String StringBuilder StringBuffer
String
String 是一個不可變類,創建方式有2種,如下:
String a = "hello"; // a 字符串存放在字符串常量池中
String b = new String("hello"); //b 字符串存放在堆中
String 既然是一個不可變的,那麼如何進行拼接操作呢?那就需要藉助StringBuiler 了。
既然String是不可變的,那它一定是個線程安全的類。
StringBuiler
下面我們修改一個字符串
String a = "hello";
String b = a + "abc";
其實現方式其實是如下的:
String a = "hello";
StringBuilder s = new StringBuilder(a); //將String字符串放入到StringBuilder對象中
s.append("abc"); //將 abc 拼接到 hello 上
return s.toString(); //返回一個字符串結果
StringBuilder 不是一個線程安全的類。在單線程下會快於StringBuffer。
StringBuffer
由於String方法對字符串的拼接修改等操作過於複雜,這時候StringBuffer就該站出來了。
StringBuffer 是一個字符串緩衝區,並且是一個可變類。所以我們可以直接在當前的StringBuffer中進行字符串的操作,不會進行其他的複雜操作,如下
StringBuffer s = new StringBuffer("hello"); //初始化一個緩衝區
s.append("abc"); //將字符串加入緩衝區
並且StringBuffer是一個線程安全的,在多線程情況下。操作數據量大的字符串的時候StringBuffer是一個不錯的選擇。