String的值是不可变的,
每次对String的操作都会生成新的String对象.String 继承于CharSequence
StringBuffer是可变的,可以用append或insert方法,把字符串添加到已有序列的末尾或者指定位置。StringBuffer本质是一个线程安全的可修改字符序列,它保证了线程安全.有synchronized方法.
StringBuilder和StringBuffer没有本质区别,区别仅在于最终的方法删除了synchronized,有效减小了开销,是绝大部分情况下进行字符串拼接的首选。
1.运行速度:StringBuilder > StringBuffer > String
2.在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
- String:适用于少量的字符串操作的情况
- StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
- StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况