文章来源: 个人博客 翔仔年轻有力量: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类