文章目录
tip:以下是正文部分
一、基本介绍
java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删
StringBuffer是一个容器。
StringBuffer 实现了 Serializable,即StringBuffer的对象可以串行化
在父类中 AbstractstringBuilder 有属性 char[] value,不是final
该 value 数组存放 字符串内容,引出存放在堆中的
在父类中 AbstractstringBuilder 有属性 char[] value,不是final
char[] value; // 这个放在堆
StringBuffer 是一个 final类,不能被继承
StringBuffer保存的是字符串变量,里面的值可以更改,
每次StringBuffer的更新实际上可以更新内容,不用更新地址,效率较高
初始化时会产生传入的字符串的长度+16的空间,如果后续添加时,空间不足会增加16
二、StringBuffer转String
// 方式1:
String s2 = b1.toString(); //b1 [StringBuffer]
// 方式2:
String s3 = new String(b1);
三、String转StringBuffer
String s = "hello";
// 方式1:
StringBuffer b1 = new StringBuffer(s);
// 方式2:
StringBuffer b2 = new StringBuffer();
b2.append(s);
四、细节
public class Main {
public static void main(String[] args) {
String str = null;
StringBuffer sb = new StringBuffer();
sb.append(str);
System.out.println(sb);//null
StringBuffer sb1 = new StringBuffer(str);//空指针异常
}
}
五、StringBuffer与StringBuild区别
StringBuffer
效率较高,多线程安全
StringBuild
效率最高,不是线程安全,用在字符串缓冲区被单个线程使用的时候