String:String类声明的是不可变的对象(也就是每次操作时会重新产生一个新的String对象,在上面操作,原来的对象不变)
StringBuilder:声明的是可变的对象,查看源码,可以看出StringBuilder的对象没有synchronized修饰,所以StringBuiilder非线程安全
StringBuffer:声明的是可变的对象,查看源码,可以看出StringBuffer的对象有synchronized修饰,所以StringBuffer是线程安全的
所以三者效率为:StringBuilder>StringBuffer>String
当考虑线程安全时,使用StringBuffer
共同点:String、StringBuilder、StringBuffer三者的底层实现都是Char数组,三者大部分方法都是相同的。



