String、Stringbuilder、StringBuffer之间的练习与区别
区别维度:
1. 可变性
a. String用final修饰,不可变
b. Stringbuilder和StringBuffer均继承抽象父类AbstractStringBuilder,其中也是用char[]数组储存字符串,但无final修饰
2. 线程安全性:源码中StringBuilder和StringBuffer都是调用父类的方法
a. StringBuffer在调用的方法上加上锁,保证了线程安全
b.性能: StringBuilder仅在性能上提升10-20%,但牺牲了安全
3. 适用场景:
a. 少量数据:String
b. 单线程操作大量数据:StringBuilder
c. 多线程操作大量数据:StringBuffer