简介
本文介绍Java的String,StringBuffer,StringBuilder的区别。
项 | String | StringBuffer | StringBuffer |
线程安全性 | 不可变。 原因:value数组是final类型。 因为不可变,所以每次操作生成新对象。 | 因为不可变,所以每次操作生成新对象。 原因:value数组是final类型。 原因:其父类(AbstractStringBuilder)的value数组不是final类型 可变。 | 可变。 原因:其父类(AbstractStringBuilder)的value数组不是final类型 |
线程安全性 | 线程安全。 原因:value数组是final类型 | 线程安全。 原因:方法都用了synchronized。 (单线程时没必要用,因为加锁了,速度慢。) | 线程不安全。 (单线程时建议使用,因为没加锁,速度快。) |