相同點:都是用來存儲字符串的容器類
不同點:
String是定長的字符串,一旦實例化後大小就不能改變
Stringbuffer是變長字符串,是線程安全的
StringBuilder是變長的字符串,是線程不安全的
String不能對已有的字符串進行添加操作,普通的str+“sfsdf”等,雖然是將後邊的字符串拼接到了str 上,但是在內存上是將原先的str指向的內存空間捨棄了,又重新申請了一段空間,獲得了新的地址引用,而原先的變成了垃圾。StringBuilder和StringBuffer都提供了append()和insert()方法進行字符串的添加操作,是在原先的地址進行的添加操作
String字符串中的==操作比較的是引用的地址是否相同例:
String str1="asd";
String str2="asd";
顯然str1==str2是 false,不只是在String 中在引用類型的變量之間進行比較時,比較的是引用地址,只有在基本數據類型中比較的纔是數據本身