常见字符串类
- String
- StringBuffer
- StringBuilder
作用
String: 不可变字符串,底层使用的是字符数组保存的字符串
private final char value[]
StringBuffer:可变字符串,继承自AbstractorBuilder,可变长,底层也是字符串数组
private char value[]
StringBuilder:可变字符串,继承自AbstractorBuilder,可变长,底层也是字符串数组。
区别
1. 可变性
String:不可变
StringBuffer和StringBuilder都可变,默认大小16个字节,扩容为原长的2倍+2.
2. 线程安全
String: 对象不可变,安全
StringBuilder:没对方法加锁,线程不安全。
StringBuffer:对方法加了同步锁,线程安全。
3.相同性
String,StringBuffer,StringBuilder都实现了CharSequence接口。
CharSequence是一个接口,它只包括length(), charAt(int index), subSequence(int start, int end)这几个API接口 。
4.性能损耗
String > StringBuffer > StringBuilder
不过性能损耗不能单纯地论,可以分为多个场景
字符串拼接很少的常见:建议String
字符串拼接很多并且线程安全:建议StringBuilder
字符串拼接很多并且线程不安全:建议StringBuffer