String 与 (StringBuilder 和 StringBuffer) 的区别
String | StringBuilder 与 StringBuffer |
---|---|
字符串数组用final修饰,不可变 | 字符串数组未用final修饰,可变 |
String
字符串数组用final修饰,导致每次对String
对象的修改操作都会生成新的String
对象,不仅效率低下,而且浪费大量优先的内存空间。
StringBuilder 和 StringBuffer 的区别
StringBuilder | StringBuffer |
---|---|
线程不安全 | 线程安全 |
有toStringCache字段 | |
JDK 1.0 | JDK 5.0 |
*
StringBuffer
比StringBuilder
多了一个toStringCache
字段,用来在toString
方法中进行缓存。
*StringBuilder
没有考虑同步,在不会出现线程安全问题的情况下,性能上StringBuilder
应该要优于StringBuffer
。