點: 可變和適用范圍。
String對象是不可變的,而StringBuffer和StringBuilder是可變字符序列。每次對String的操作相當于生成一個新的String對象,而對StringBuffer和StringBuilder的操作是對對象本身的操作,而不會生成新的對象,所以對于頻繁改變內容的字符串避免使用String,因為頻繁的生成對象將會對系統性能產生影響。
第二點: 線程安全。
String由于有final修飾,是immutable的,安全性是簡單而純粹的。StringBuilder和StringBuffer的區別在于StringBuilder不保證同步,也就是說如果需要線程安全需要使用StringBuffer,不需要同步的StringBuilder效率更高。