1.String 是不可变的,如果尝试去修改,会生成一个新的字符串对象, StringBuffer 和 StringBuilder 是可变的
2.StringBuffer 是线程安全的,因为底层的所有方法用 synchronized 修饰了 ,StringBuilder在多线程条件下是不安全的,因此效率比 StringBuffer 高 ,所以在不考虑线程安全的情况下优先使用StringBuilder。
String buffer builder 的区别和使用场景
String是final修饰的,不可变,每次操作都会产生新的String对象
Buffer和Builder都是在原对象上操作
Buffer是线程安全的,Builder线程不安全 多线程 共享变量 结果会不会发生变化
Buffer方法都是 synchronized 修饰的
性能 Builder>Buffer >String
场景:经常需要改变字符串内容是使用buffer和builder
使用时优先考虑StringBuilder,多线程使用共享变量时使用StringBuffe