转自:http://blog.csdn.net/qq_27918787/article/details/52297067
一、String:
–String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。
–String的操作都是改变赋值地址,而不是改变值。
二、StringBuffer:
–可变且线程安全,任何对它指向的字符串的操作都不会产生新的对象。
–每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。
三、StringBuilder:
–与StringBuffer类功能基本类似,区别是非线程安全,且StringBuilder类会略微快一点。
四、速度
一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的。
五、总结
(1).如果要操作少量的数据用 = String
(2).多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
(3).单线程操作字符串缓冲区 下操作大量数据 = StringBuilder