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