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

原文地址:https://www.cnblogs.com/big-data-hins/p/13381575.html