线程安全
| 线程安全 | 线程不安全 |
|---|---|
| StringBuffer | String, StringBuilder |
StringBuffer 线程安全的原因
- 方法声明时,用 synchronized 修饰
-
同一个实例,同一个方法,不能被两个调用者同时使用
-
长度可变
长度可变|长度不可变 StringBuffer, StringBuilder | String
长度可变与不可变的原因
- String 长度不可变原因
- 创建时,内部声明的字符数组
final char[] value为长度不可变数组
- 创建时,内部声明的字符数组
- StringBuffer, StringBuilder 长度可变的原因
- 创建时,内部声明的字符数组
char[] value为长度可变数组
- 创建时,内部声明的字符数组
运行速度 SringBuilder > StringBuffer > String
-
String 每次改变值,需要重新创建一个实例
-
StringBuffer 操作的方法,加上了同步锁 synchronized
-
StringBuilder 方法没有同步锁