String的方法都有final修饰,对象在堆内存中,不可改变,因此每次使用String对象的方法和操作的时候,可以看做是“指针”指向了另一个堆内存空间,开辟新空间;
StringBuilder和StringBuffer的对象都是可变的,而且StringBuilder和StringBuffer里面有许多“轮子”,因此,操作的时候适当转换即可,new StringBuffer(string),string.toString(),这样就可以操作一堆jdk自带的方法,妙不可言,相对于StringBuffer,只是加了synchronized的StringBuilder,加锁就同步,同步就安全,安全就比较慢,看需求而定,目前我也只用了一些StringBuilder和String。