StringBuffer

  StringBuffer简介::

    StringBuffer是一个字符的缓冲区,如果需要频繁的对字符串进行拼接时,建议使用StringBuffe。

  工作原理:

    StringBuffer的底层是一个char类型的数组,如果没有明确设定,则系统会自动创建一个长度为16的char类型数组,在使用数组的时候,如果长度不够了,则会通过拷贝对数组进行扩容,所以使用StringBuffe时最好预测并且手动进行初始化长度,这样能够减少数组的拷贝,从而提高效率。

  StringBuffer与String的区别:

    String是不可变字符序列,储存在字符串常量池中

    StringBuffer的底层是char类型数组,系统会对该数组进行扩容

  StringBuffer  的构造方法:

    如果没有明确指出参数长度的话,系统会自动给一个16的长度参数。

    我个人建议我们在使用StringBuffer我们要提前预估一个长度。

    如果我们传递的是一个字符串String类型,那么这个StringBuffer的长度就是这个String类型的字符串长度+16.

  public class SKT16 {

  public static void main(String[] args) {
  //如果没有明确指出长度,系统会自动创建长度16;
  StringBuffer sb=new StringBuffer();
  System.out.println(sb.capacity());
  //明确长度一百
  //在使用这个的时候,建议预估一个长度
  StringBuffer sb1=new StringBuffer(100);
  System.out.println(sb1.capacity());
  //如果我们传递的是String类型的参数,那么这个StringBuffer长度就是参数的长度+16
  StringBuffer sb2=new StringBuffer("monkey");
  //长度为什么不是6二十22呢,因为系统会在你传递进去的字符串长度基础上+16的长度
  System.out.println(sb2.capacity());
  }
}

原文地址:https://www.cnblogs.com/JiXianSen/p/12166416.html