String是由final修饰的,不可变,每次操作都会产生新的string对象
StringBuffer和StringBuilder是在原对象上进行操作,不会生成新的对象。
所以在对字符串操作十分频繁经常需要改变字符串内容时通常使用StringBuffer和StringBuilder。
StringBuffer和StringBuilder的区别:
StringBuffer是线程安全的,其方法都是synchronized修饰的。
StringBuilder是线程不安全的。
性能:StringBuilder>StringBuffer>String
我们在所有的场景中,优先使用StringBuilder; 当变量作为共享变量且在多线程环境下要保证结果正确,这种场景下使用StringBuffer来保证线程安全; 对字符串没有经常性改动使用String就可以了。