首先String是不可变字符串,因为它是final修饰的,每次操作都会产生新的String对象
StringBuffer和StringBuilder是可变字符串,每次操作都是在原对象上
StringBuiler不是线程安全的—-所有方法都没有被synchronized修饰
StringBuffer是线程安全的—-所有的方法都被synchronized修饰
所以StringBuilder的效率理论上是大于StringBuff的
优先使用StringBuilder,多线程使用共享变量时使用StringBuffer
使用“+”拼接字符串,本质上与使用StringBuilder的append方法一样
使用“+”,在编译时也会转成StringBuilder类进行append操作
StringBuilder和StringBuffer有共同的父类:AbstractStringBuilder抽象类
调用的方法也是父类的方法,就是后者在调用的时候加了同步锁:synchronized