· String是不可变的(修改String时,不会在原有的内存地址修改,而是重新指向一个新对象),String用final修饰,不可继承,String本质上是个final的char[]数组,所以char[]数组的内存地址不会被修改,而且String 也没有对外暴露修改char[]数组的方法.不可变性可以保证线程安全以及字符串串常量池的实现.频繁的增删操作是不建议使用String的
· StringBuffer是线程安全的,多线程建议使用这个
· StringBuilder是非线程安全的,单线程使用这个更快
StringBuffer与StringBuilder的char[]数组不是final修饰的,所以在改变字符串的时候不需要重新new一下,开销比较小。StringBuffer是每个方法都是用synchronized修饰的,所以是线程安全的,但是StringBuilder是线程不安全的,在单线程中使用。