最近的学习整理了一下关于String StringBuffer StringBuilder 的小知识点
区别
a.String 和StringBuffer StringBuilder的区别?
String是使用final关键字修饰的字符数组,以此来保存字符数组,源码如下 由于是private final char value[],所以 String 对象是不可变的。
但是StringBuilder 和StringBuffer都用到了父类AbstractStringBuilder的构造方法
public StringBuilder() {
super(16);
}
public StringBuilder(int capacity) {
super(capacity);
}
public StringBuilder(String str) {
super(str.length() + 16);
append(str);
}
public StringBuilder(CharSequence seq) {
this(seq.length() + 16);
append(seq);
}
StringBuffer/StringBuilder在第一次创建对象的时候会多
预留16块缓冲区【防止字符串里面追加连接】
当缓冲区满了之后 扩容:
(当前数组空间大小 + 新字符串长度) * 2
- StringBuffer和StringBuilder的区别:
- StringBuffer同一时间允许一个线程进行访问 效率较低
- StringBuilder同一时间允许多个线程进行访问 效率较高