1.相同点
三者都可以用来存储字符串类型数据。
2.不同点
String类型对象内容不可变,每变化一次都会创建一个新的对象。
StringBuiler与StringBuffer的内容与长度均可以发生变化,不会创建新的对象,而且变化速度快。
3.StringBuffer与StringBuilder的对比
相同点:数据都存储在底层数组中,数组初始长度为16,空间不足时创建新的数组扩容。
不同点:StringBuffer是线程安全的,StringBuilder是线程不安全的,在多线程环境下StringBuilder比StringBuffer执行快。
4.StringBuffer与StringBuilder使用时注意事项
两者底层都是通过字符串数组来存储数据的,频繁的扩容会降低效率,因此在使用前应预先估计数据的长度,使用使用指定初始容量的方式创建对象,避免频繁的扩容。