StringBuffer和StringBuilder(2020-01-16)

StringBuffer和StringBuilder简介

我们先讲一下StringBuffer

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

工作原理

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

String与StringBuffer的区别?

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

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


/ /如果没有明确指出,系统默认长度是16

stringBuffer sb =new StringBuffer() ;


//建议预估字符串的长度,并且声明StringBuffer的长度

StringBuffer sb1 = new stringBuffer (100) ;


/ /如果传入String类型,则初始化长度为string的length+16

StringBuffer sb2= new StringBuffer ("monkey") ;

使用StringBuffer进行字符串拼接


//指定位置添加

sb1. insert(4, "1024") ;|

System. out. println (sb1) ;

//将指定位置删除

sb1.delete(4, 8) ;

Sys tem. out. println(sb1) ;


StringBuilder

StringBuilder和StringBuffer的区别

通过API可以看到StringBuilder和StringBuffer里面的方法是一样的, 那他们有什么区别呢?

StringBuffer是jdk1.0版本中加入的,是线程安全的,效率低

StringBuilder是jdk5版本加入的,是线程不安全的,效率高

看公司项目所需的如果你需要线程安全的就选择StringBuffer,如果是需要高效率的就选择StringBuilder

你可能感兴趣的:(StringBuffer和StringBuilder(2020-01-16))