String是final修饰的,是不可变的,每操作一次都会产生一个新的对象(导致内存浪费的比较多)
StringBuffer和StringBuilder不一样,他们是直接在原对象上进行操作(不会生成新的对象,如果对字符串操作比较频繁,需要经常改变字符串的时候用这两个)
StringBuffer是线程安全的,而StringBuilder是线程不安全
因为StringBUffer里面的每一个方法都有synchronized的修饰
性能:StringBuilder>StringBuffer>String
使用场景:
优先使用StringBuilder,但当变量是共享变量,而且在多线程的环境下保证结果正确就使用StringBffer,但如果不是这种情况下,单纯考虑效率问题就用StringBuilder
补充:如果对数据不是经常改动的话,就直接用String