StringBuffer
和StringBuilder
区别
String Buffer
线程安全的(上锁了)
StringBuilder
线程不安全(没有加锁)
String Buffer
和StringBuilder
都继承AbstractStringBuilder
StringBuffer
StringBuffer
:代表可变的字符序列,称为字符串缓冲区
工作原理:
预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列
StringBuffer
是可变对象,这个是String
最大的不同
默认缓冲区大小
默认缓冲区大小:16个字符
StringBuilder
字符串构建器,因为字符串一旦创建就不可再更改,如果我们需要对字符串进行组装,那么就会产生新的字符串,
产生新的字符串,就意味着有新的内存开销。如果存在打了字符串组装,那么内存开销随着组装次数的增加,也会
不停的增加,为了减少字符串组装的开销,于是设计了字符串构建器
常用方法
append()
追加字符串
StringBuilder builder = new StringBuilder();
builder.append("abcde").append("aaa");
delete()
删除使用的区间是[start,end)
builder.delete(0,1);
System.out.println(builder);
insert()
在指定下标上插入字符串
//插入的时候,第一个参数表示偏移量
builder.insert(2,"@");
System.out.println(builder);
程序案例
100000000000000,将这个数字转换为金融数字100,000,000,000,000
StringBuilder sb = new StringBuilder("100000000000000");
int len = sb.length();
for(int i=len-3; i>0; i-=3){
sb.insert(i, ',');
}
System.out.println(sb);
reverse()
反转字符
StringBuilder reverse = sb.reverse();
System.out.println(reverse.toString());
StringBuffer
和StringBuilder
方法用法差不多这里不在举例StringBuffer
。