String 字符串常量
StringBuffer 字符串变量
StringBuilder 字符串变量
String s = "abc";
s = s + 1;
s最终输出为 abc1 实质上对象 s 并没有改变 每当用 String 操作字符串时 实际上是在不断创建新的对象 并将这些对象合并在一起
StringBuffer 是可改变的对象 当对这些字符串操作时 实际上是在对一个对象上进行操作 不会像 String 一样创建新的对象 所以执行速度快于String
StringBuilder 线程非安全
StringBuffer 线程安全
当我们在字符串缓冲区被多个线程使用时 JVM 不能保证 StringBuilder的操作是安全的 虽然它的执行速度最快 但是可以保证 StringBuffer 是可以正确操作的 当然大多数情况下就是我们是在单线程下进行的操作 所以大多数情况下是建议用 StringBuilder 而不用StringBuffer 的