借用别人总结的一句话就是:常量和变量之间的关系.
String的内容是不可变的,StringBuffer是可变的;
String的内容被指定之后,再次赋值,其实是创建了一个新的对象在方法区,也就是说其实创建了两个对象.
StringBuffer的内容可变,对其进行增删改还是同一个对象,所以需要对字符串进行频繁操作的,建议使用StringBuffer,效率比String高很多.
除此之外,还有一个Stringbuilder,也是字符串常量,但是StringBuilder是线程不安全的,StringBuffer是线程安全的.相反的是StringBuilder的效率要比StringBuffer高.
若需要对字符串频繁操作,建议使用StringBuffer,但是若是所在单线程里面使用的话,可以换成StringBuilder.
总结:
StringBuffer类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区。这样使用StringBuffer类的append方法追加字符 比 String使用 + 操作符添加字符 到 一个已经存在的字符串后面有效率得多。因为使用 + 操作符每一次将字符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大的字符串,这无凝是一个非常消耗时间的操作。添加多个字符也就意味着要一次又一次的对字符串重新分配内存。使用StringBuffer类就避免了这个问题。