比较一下String,StringBuffer,StringBuilder
1,三者同时final类,内部是靠char数据进行的实现,但是其中String为不可变,
(插句嘴,也许有人,极少数人,不懂为什么不可变,举个例子 String str ="abc";
str=“def” 这时候表面上看的确是改变了str的值,其实这只是假象,真正变的是地址,讲一个"def"字符串的地址给了str)
而StringBuffer,StringBuilder却可以进行追加,因为StringBuffer,StringBuilder都实现了appendable接口,而String没有。
2,StringBuffer与StringBuilder 的区别
直接截取API上的解释
StringBuilder是一个可变的字符序列。此类提供一个与 StringBuffer
兼容的 API,但不保证同步。该类被设计用作 StringBuffer
的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer
要快。
将 StringBuilder
的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer
。