比较
String:不可变字符序列,String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率低,但复用率高
StringBuffer、StringBuilder非常类似,保存的是字符串变量,里面的值可以修改,每次更新实际上可以更新内容,不用每次更新地址,在一个数组存完后才更改地址,效率较高而且方法也一样
StringBuffer:可变字符序列,效率较高(增删)、线程安全
StringBuilder:可变字符序列,效率最高,线程不安全
选择
如果字符串存在大量修改操作,一般使用StringBuffer或StringBuilder
如果字符串存在大量修改操作,并在单线程的情况,使用StringBuilder
如果字符串存在大量修改操作,并在多线程的情况,使用StringBuffer
如果字符串很少修改,对多个对象引用,使用String,比如配置信息等
效率:StringBuilder>StringBuffer>String