今天在整理不可变对象知识点时,忽然看到了String,StringBuffer,StringBuilder三者的区别,这里就挑一些我认为比较重要的点记录一下,方便往后查看。数组
String,StringBuffer,StringBuilder,都是final类,不容许被继承,在本质上都是字符数组,不一样的是,String的长度是不可变的然后二者长度可变,在进行链接操做时,String每次返回一个新的String实例,而StringBuffer和StringBuilder的append方法直接返回this,因此当进行大量的字符串链接操做时,不推荐使用String,由于它会产生大量的中间String对象。app
StringBuffer和StringBuilder的一个区别是,StringBuffer在append方法前增长了一个synchronized修饰符,以起到同步的做用,为此也下降了执行效率;若要在toString方法中使用循环,使用StringBuilder。ui