相同点:都是用来存储字符串的容器类
不同点:
String是定长的字符串,一旦实例化后大小就不能改变
Stringbuffer是变长字符串,是线程安全的
StringBuilder是变长的字符串,是线程不安全的
String不能对已有的字符串进行添加操作,普通的str+“sfsdf”等,虽然是将后边的字符串拼接到了str 上,但是在内存上是将原先的str指向的内存空间舍弃了,又重新申请了一段空间,获得了新的地址引用,而原先的变成了垃圾。StringBuilder和StringBuffer都提供了append()和insert()方法进行字符串的添加操作,是在原先的地址进行的添加操作
String字符串中的==操作比较的是引用的地址是否相同例:
String str1="asd";
String str2="asd";
显然str1==str2是 false,不只是在String 中在引用类型的变量之间进行比较时,比较的是引用地址,只有在基本数据类型中比较的才是数据本身