string和StringBuilder的区别

参考文档:https://www.cnblogs.com/mrxy/p/8057657.html

https://blog.csdn.net/qq_28187979/article/details/76607253?

   都是引用类型,分配在堆上。

   StringBuilder默认容量是16,可以允许扩充它所封装的字符串中字符的数量。每个StringBuilder对象都有一定的缓冲区容量,当字符串大小没超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

     对于简单的字符串连接操作,在性能上StringBuilder不一定优于string,因为StringBuilder对象的创建也消耗大量性能,在字符串连接比较少的情况下,过度滥用StringBuilder会导致性能的浪费而非节约,只有大量无法预知次数的字符串操作才考虑Stringbuilder的使用。所以,如果是相对较少的字符串拼接根本看不出太大差别。

   StringBuilder的使用,最好制定合适的容量值,否则由于默认容量不足而频繁的进行内存分配。

原文地址:https://www.cnblogs.com/juneyss/p/14677322.html