String、StringBuffer和StringBuilder——个人学习

1.首先说一下他们的名称区别:

String——字符串常量,StringBuffer——字符串变量(线程安全),StringBuilder——字符串变量(非线程安全)

从名称就可以很明显的看出他们的基本的区别,主要区别就是String是不可变的,每一次对String类型进行改变时都会生成一个信息String对象,将原引用指向它,所以经常改变字符串的内容时最好不用String,太多无引用对象产生后Java虚拟机的GC会开始工作,降低效率。

而StringBuffer和StringBuilder是可变的。

2.StringBuilder是在Java5.0发布的,StringBuilder和StringBuffer都是继承自一个父类,实现了同样的接口,但是StringBuffer的大部分方法都是同步的,是线程安全的,适合用于多线程;StringBuilder是非线程安全的,适合用于单线程,并且在单线程中StringBuilder的效率要高于StringBuffer。

3.在大多数情况下,三者的效率为:

StringBuilder > StringBuffer > String

原文地址:https://www.cnblogs.com/gsbm/p/4756112.html