StringBuffer和StringBuilder
2020-09-18 本文已影响0人
是归人不是过客
1、StringBuffer和StringBuilder是什么?
是字符串缓冲区
2、工作原理
预先在内存中申请一块空间,以容纳字符序列,如果这块空间够用,则自动进行扩容,以容纳更多
的字符序列。
3、StringBuffer,StringBuilder和String最大区别?
String是不可变的字符序列,存储字符串常量池中
StringBuffer底层是一个char数组,但是该char数组是可变的,并且可以自动扩容。
4、StringBuffer和StringBuilder的默认初始化容量是16
5、如何优化StringBuffer和StringBuilder妮?
最好在创建StringBuffer之前,预测StringBuffer的存储字符数量,然后再创建StringBuffer的时候采
用初始化容量的方式创建StringBuffer,为了减少底层数组的拷贝。提高效率。
6、StringBuffer和StringBuilder的区别
StringBuffer是线程安全的(可以在多线程的环境下)
StringBuilder是非线程安全的(在多线程环境下可能出现问题)
举栗子·:
public class Test{
public static void main(String[] args) {
// 创建字符串缓冲区
StringBuffer sb = new StringBuffer(); // 16
//可以向StringBuffer中追加字符串
String[] ins = {"体育","音乐","睡觉","美食"};
// 推荐字符串频繁拼接使用StringBuffer或StringBuilder
for(int i = 0;i < ins.length;i++) {
if(i == ins.length - 1) {
sb.append(ins[i]);
}else {
sb.append(ins[i]);
sb.append(",");
}
}
System.out.println(sb);
}
}