首页 > 代码库 > 2.StringBuffer:线程安全的可变字符串序列

2.StringBuffer:线程安全的可变字符串序列

一、String、StringBuffer和StringBuilder的区别

1.String是内容不可变的,而StringBuffer和StringBuilder都是内容可变的。

2.StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高。

二、StringBuffer的方法

1.添加:append(),insert()

2.删除:deletecharAt(),delete()

3.替换:replace()

4.反转:reverse()

5.截取:subString()(返回值类型String)

三、.StringBuffer和String的相互转换

  1. /* String -- StringBuffer */
  2. //方式1:通过构造方法
  3. String s = "hello";
  4. StringBuffer sb = new StringBuffer(s);
  5.                //方式2:通过append方法
  6. String s2 = "hello";
  7. StringBuffer sb2 = new StringBuffer();
  8. sb2.append(s);
  1.                //StringBuffer ---String
  2. //方式1:通过构造方法
  3. StringBuffer buffer = new StringBuffer("hello");
  4. String str = new  String(buffer);
  5. //方式2:通过toString()方法
  6. String str2 = buffer.toString();

四、String和StringBuffer作为形参传递(要特别注意)

String做为形参传递,效果和基本数据类型一致。

  1. public class StringTest {
  2. public static void main(String[] args) {
  3.    String s1 = "hello";
  4.    String s2 = "world";
  5.    System.out.println(s1+"===="+s2);//hello====world
  6.    change(s1,s2);
  7.    System.out.println(s1+"===="+s2);//hello====world
  8.    
  9.    StringBuffer sb1 = new StringBuffer("hello");
  10.    StringBuffer sb2 = new StringBuffer("world");
  11.    System.out.println(sb1+"======"+sb2);//hello====world
  12.    change(sb1,sb2);
  13.    System.out.println(sb1+"======"+sb2);//hello======worldworld
  14. }
  15. public static void change(StringBuffer sb1, StringBuffer sb2) {
  16. sb1 = sb2;
  17. sb2.append(sb1);
  18. }
  19. public static void change(String s1, String s2) {
  20. s1 = s2;
  21. s2 = s1 + s2;
  22. }
  23. }





来自为知笔记(Wiz)


2.StringBuffer:线程安全的可变字符串序列