stringBuffer & StringBuilder

String 的字符串缓冲区

  StringBuffer  :  线程安全的

  StringBuilder :  线程不安全的   效率高

与String  区别:

  String 不可变    StringBuffer 可变

无参构造 :

  构造一个缓冲区   默认16个字节的容量(capacity)

有参构造三个:

  StringBuffer(int capacity) 指定容量 不常用
  StringBuffer(String str)  直接接收字符串

  StringBuffer(charsequence chs)     接收一个charsequence接口的子类对象

      charsequence 接口   实现的子类有    String, StringBuffer, StringBuilder

public static void main(String[] arr) {
        StringBuffer sb1 = new StringBuffer();
        System.out.println(sb1.capacity());  // 16   是默认容量
        System.out.println(sb1.length());   //  0  是字符串长度
        
        StringBuffer sb2 = new StringBuffer(10);
        System.out.println(sb2.length());   // 0  是字符串长度
        System.out.println(sb2.capacity());  // 10  是指定的容量
        
        StringBuffer sb3 = new StringBuffer("heima");
        System.out.println(sb3.length());     //5
        System.out.println(sb3.capacity());   // 21        
    }

append()   :   添加功能     基本数据类型都能接收,  返回的是缓冲区本身

insert()   : 插入     insert(index,value)

deleteCharAt(int index)   :  删除指定位置

delete(int start,int end)    :   删除一段 (取头不取尾),返回的是缓冲区本省

  delete(0,sb.length)   :  清空缓冲区

replace(start,end,newstr)        替换功能  替换指定部分

####反转 sb.reverse()#####

    public static void main(String[] args) {
        Scanner sc1 = new Scanner(System.in);
        System.out.println("请输入字符串");
        String s1 = sc1.nextLine();
        StringBuffer sb1 = new StringBuffer(s1);
        sb1.reverse();
        System.out.println(sb1);   //   默认调用toString()方法
        }

subString(start,end) 切割 #### 返回的是一个String ####

String 和 StringBuffer 的转换: 
  String --> StringBuffer :
    StringBuffer的构造、 append(str)
  StringBuffer --> String:
    toString()、 subString() 、 String的构造

当做参数传递时, String 看做常量 不改变值
        StringBuffer 是引用数据类型 会改变值

竹杖芒鞋轻胜马,一蓑烟雨任平生。 回首向来萧瑟处,也无风雨也无晴。
原文地址:https://www.cnblogs.com/yaobiluo/p/11302084.html