美文网首页
Java基础:String, StringBuffer, Str

Java基础:String, StringBuffer, Str

作者: 木头与琉璃 | 来源:发表于2020-01-15 09:46 被阅读0次
  • String是不可变字符数组
  • StringBuffer是线程安全的字符数组
  • StringBuilder是线程不安全的字符数组

字符数组变化性能对比: StringBuilder > StringBuffer > String
原因是因为String每次改变都要生成一个新的字符串,所以性能最差。StringBuffer虽然不是生成一个新的字符串,但变化的时候要加锁保证线程安全,所以性能较差,StringBuilder是线程不安全的,所以三者中性能最好。

那开发中为什么用性能最差的String频率最多,每次修改都创建一个新的String对象岂不是会产生大量的String对象?
JAVA中有一个字符串池,会把创建过的字符串都放到池中,每次创建字符串时,先从字符串池中取字面量相同的字符串,如果池中没有,就创建一个放到池中并赋值给自己。所以,字面量相同的字符串的引用地址肯定是相同的。而且,字符串的不可变性(final)能保证其线程安全。

相关文章

网友评论

      本文标题:Java基础:String, StringBuffer, Str

      本文链接:https://www.haomeiwen.com/subject/ojwaactx.html