摘要
- String是一个final修饰类,所有的属性也是final。所以具有不可变性,对字符串的操作,比如拼接、剪切都会产生新的String对象。
- StringBuffer本质是一个线程安全的可以修改字符串序列。因为保证线程安全(sync),所以会带来额外的性能消耗。
- StringBuilder本质上和StringBuffer没有区别,但是StringBuilder去掉了线程安全部分,提高了操作效率。是绝大部分情况下字符串拼接的首选。
注:如果确定拼接字符串会发生多次,并且长度可预计,那么可在开始的时候指定长度的大小,避免数组的扩容造成的开销。