String StringBuffer和StringBuilder

1 可变性

String对象一旦创建就不可改变了,因为字符串是放在常量池的。

StringBuffer和StringBuilder中的字符串是可变的,因为字符串放在字符数组中。

2 线程安全

StringBuilder不是线程安全的,StringBuffer是线程安全的。

3 StringBuilder和StringBuffer都是AbstractStringBuilder的子类

4 处理速度

String最慢,StringBuilder最快,StringBuffer中间。

因为String是不可变的,因此加入要append的话,其实是要创建新的对象的,又加重了gc的负担。

StringBuffer是加了锁的,多了开销。

5 适用情况

String适合于字符串不变的情况。

StringBuilder单线程,字符串易变的情况。

StringBuffer多线程,字符串易变的情况。

猜你喜欢

转载自www.cnblogs.com/hustdc/p/8905813.html