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());
}
}