Stirng:

        String 是不可变的对象,在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。

StirngBuffer:

        每次更改都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。

StringBuilder:

        StringBuilder 是 JDK5.0 中新增加的一个类,StringBuffer 线程安全的可变字符序列。类似于 String 的字符串缓冲区,但不能修改。与StringBuffer 类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。 但是如果将 StringBuilder 的实例用于多个线程是不安全的。需要这样的同步,则建议使用 StringBuffer 。

基本来说都是在性能上都是 StringBuilder > StringBuffer > String。