String:当改变一个String对象a的值时,会重新new一个String对象,然后把a的引用指向新的String对象。
StringBuffer:当改变StringBuffer对象a的值时,不会重新new,而是直接改变a引用里面的值。是线程同步的。
StringBuilder:类似StringBuffer,但是不是线程同步的。
注意:是不是String也不安全呢?事实上不存在这个问题,String是不可变的。线程对于堆中指定的一个String对象只能读取,无法修改,所以是安全的。
StringBuffer:当改变StringBuffer对象a的值时,不会重新new,而是直接改变a引用里面的值。是线程同步的。
StringBuilder:类似StringBuffer,但是不是线程同步的。
注意:是不是String也不安全呢?事实上不存在这个问题,String是不可变的。线程对于堆中指定的一个String对象只能读取,无法修改,所以是安全的。