String是final修饰的不可变,每次操作时都会产生新的string对象。
就比如说先定义了string s=abc,然后如果使用s.append('c')不是在原基础上对字符串进行修改,而是创建了一个新的字符串。
StringBuffer,StringBuilder则是在原对象基础上进行修改的
区别在于StringBuffer里的方法都是sychornized修饰的是线程安全的。StringBuilder是线程不安全的
线程安全不安全是指在多线程情况下,对于共享变量修改时结果是否可以保持一致。
场景:经常需要改变字符串内容时使用后两个。
优先使用StringBuilder,多线程使用共享变量时使用StringBuffer