文章来源:
个人博客 翔仔年轻有力量:String、StringBuffer和StringBuilder的区别
String类的基本特征
- 被声明为final类,内部变量char value[]亦被final修饰
- 指向的char value[]不可变,因而每次操作时都会生成新的String对象,而将旧的String对象丢弃,造成浪费
- 典型的Immutable(不可变)类
- 字符串常量池缓存
注:String对象并非完全不可变,可以通过对String类的value字段进行修改,改变value属性的访问权限,以达成修改String对象的目的
StringBuffer与StringBuilder
-
共同点:
- 二者的实现基于可变、可修改的char数组,默认大小为16.
- 都继承自抽象类AbstractStringBuilder
-
不同点:
- StringBuffer具备线程安全性,但StringBuffer效率低
- StringBuilder非线程安全,但StringBuilder效率高
小结
- 操作少量数据,对数据内容不常改变的业务场景适合用String类
- 多线程环境下,对字符串操作频繁的业务场景使用StringBuffer类
- 单线程环境下,对字符串操作频繁的业务场景使用StringBuilder类