String、StringBuffer、StringBuilder的区别及使用场景

配套视频

速记表格

分类 可变性 安全性 操作对象 相对效率 String final修饰对象不可变 线程安全 新对象 最低 StringBuffer 内容可变 synchronized 关键字修饰,线程安全 原对象 低 StringBuilder 内容可变 非线程安全 原对象 高

详细说明

String

    String是final修饰的,对象不可变,线程安全。如果对一个已经存在的String对象修改,会重新创建一个新对象,并把值放进去。

StringBuffer

    StringBuffer,采用 synchronized 关键字修饰,线程安全

StringBuilder

    StringBuilder,非线程安全,但效率会更高些,适用于单线程。

StringBuffer 和 StringBuilder 的方法基本相同只是在效率上有所不同

// 增加
StringBuffer append(data);尾部添加
StringBuffer insert(index,data);指定未知插入
// 删除
StringBuffer delete(int start, int end)
StringBuffer deleteCharAt(int index):删除指定位置的元素

// 修改改
StringBuffer replace(start,end,string);
void setCharAt(index,char);
// 查询
char charAt(index);
int indexOf(string);

继承结构

使用场景

性能:String <StringBuffer<StringBuilder

    经常需要改变字符串内容时使用后两个 优先使用StringBuilder,多线程使用共享变量时使用StringBuffer
经验分享 程序员 微信小程序 职场和发展