String:java.lang.String被设计为final类型,这意味着该类不能被Override,其定义的变量不是基本类型而是对象类型。对象变量一旦定义后,其值就不能被修改。对于已经存在的String对象,“修改它的值”,其实并没有修改其值,只是新创建了一个对象,然后将新值赋予这个对象,原来的对象被回收。
StringBuffer:java.lang.StringBuffer也被设计为final类型,它是一个类似于String字符串缓冲区,对它的修改不会像修改String那样重复创建很多新对象。使用其append方法可以修改StrigBuffer内的值,它是在JDK1.0的时候问世。StringBuffer是一个线程安全的,能够用在多线程的环境下。
StringBuilder:java.lang.StringBuilder也被设计为final类型,在JDK1.5时问世,用来代替StringBuffer,但是StringBuilder是一个非线程安全的类,只能用在单线程的环境下才能准确的替换StringBuffer。因为StringBuilder不执行线程同步,所以它的效率要比StringBuffer更快。