StringBuffer和StringBuilder
Java.lang.StringBuffer和Java.lang.StringBuilder是什么?
答:是一个字符串缓冲区
工作原理
预先在内存中申请一块空间,以容纳字符序列,如果预留的空间不够用,则进行自动扩容,以容纳更多字符序列
Java.lang.StringBuffer和Java.lang.StringBuilder 和 String最大的区别是什么?
答:String是不可变得字符序列,存储字符串常量池中
StringBuffer底层是一个char数组,但是该char数组是可变的并且可以自动扩容
StringBuffer 和 StringBuilder的默认初始化容量是16
- 最好在创建 stringBuffer之前,预测 StringBuffer的存储字符数量
然后再创建 stringBuffer的时候采用指定初始化容量的方式创建StringBuffer
为了减少底层数组的拷贝。提高效率
在使用字符串拼接时使用String类型会消耗很大内存,可以使用StringBuffer和StringBuilder来进行字符串的拼接
StringBuffer和StringBuilder的区别?
stringBuffer是线程安全的。(可以在多线程的环境下使用不会出现问题.)
stringBui1der是非线程安全的。(在多线程环境下使用可能出现问题.)
示例代码:
// 创建字符串缓冲区对象
StringBuffer s1 = new StringBuffer(); // 默认初始化=16
// 可以向StringBuffer中追加字符串
String[] s2 = {"Sport","PhysicalEducation","Sleep","Food"};
for (int i = 0; i < s2.length; i++) {
if (s2.length-1==i) {
s1.append(s2[i]);
}else {
s1.append(s2[i]);
s1.append(",");
}
}
System.out.println(s1); // ==》Sport,PhysicalEducation,Sleep,Food