String是final不可变的,对String类的任何改变,都是返回一个新的String类对象。把String类的引用传递给一个方法,该方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似。
StringBuffer是字符串变量,它的对象是可以扩充和修改的,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String。StringBuffer方法大都采用了 synchronized关键字进行修饰,因此是线程安全的。
StringBuilder是StringBuffer的一个简易替换,但是非线程安全。