string :不可变对象,要完成对string的修改,需要大量的中间对象,这样就造成了大量的垃圾运作,
StringBuilder:可变,后出来。
StringBuffer:不可变
相同:API完全相同。
不同:StringBuffer是线程安全的,性能低(多线程使用统一资源需要排队)
java5之后出来的StringBuilder是非线程安全的,
public static void main(String[] args) {
String str = "a";
StringBuilder sb = new StringBuilder(str);
sb.append("bc");// 字符串拼接
System.out.println(sb);// abc
sb.insert(2, "我爱你");// zi字符串插入
System.out.println(sb);// ab我爱你c
sb.delete(1, 2);// shan删除
System.out.println(sb);/// a我爱你c
sb.replace(1, 2, "ni ");// ti替换
System.out.println(sb);// ani 爱你c
String substr = sb.substring(3);// ti提取
System.out.println(substr);// 爱你c
System.out.println("-----------------------------");
sb.reverse();// 翻转
System.out.println(sb);// c你爱 ina
}