本质上来说,String 、StringBuider 、StringBuffer 都是对字符串的存储
String 与 StringBuilder 、StringBuffer 最大的区别在于,String存储空间不变,一单改变赋值,其实只是换了个常量池的空间。
//当然String本身也是Class
String s=new String("sss");
//这样的空间上就是在(堆)heap中
但是StringBuider与StringBuffer空间都在heap中,且
两者都是可变结构,即长度可以改变
StringBuffer:线程安全,即用于多线程
StringBuider:线程不安全,即用于单线程
总结:(API原文翻译)
StringBuffer:线程安全,可变的字符序列;
StringBuilder:一个可变的字符序列。 此类提供与StringBuffer的相同的API,但不保证同步。
String:字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享。