黑马程序员技术交流社区

标题: StringBuilder和List<string>区别 [打印本页]

作者: 段朝骞    时间: 2013-9-27 01:39
标题: StringBuilder和List<string>区别
本帖最后由 段朝骞 于 2013-9-27 16:14 编辑

如题,StringBuilder和List〈string〉在使用上,效率上,应用上有什么区别,哪个比较常用些
作者: 黄广祯    时间: 2013-9-27 04:03
StringBuilder 可变字符串,一般用于大量对字符串拼接或进行操作时。在它的类内部,实现了很多方法,可以在原有的实例上进行操作,string在运算时会产生新的实例,StringBuilder比string更占有优势。

List<string> 是由泛型实现的动态string数组,与StringBuilder的专业操作字符串,效率执行上List明显要低一些。

但在操作多字符串的时候,StringBuilder只能通过数组来实现,与List<string>的动态可变相比,灵活性要差了一些。。。

而且StringBuilder操作多字符串的时候只能声明数组来实现,这样应用灵活性不及List<string>

突然想到不知道 List<StringBuilder>  可不可以。。。

希望能帮到你,欢迎高手来指点下。。。





作者: 黄广祯    时间: 2013-9-27 04:05
刚才运行了下,List<StringBuilder>可以的。
作者: -___Is、_C    时间: 2013-9-27 08:32
String是固定不变的,在进行字符串连接的时候是新建一个字符串,进行连接后,最后赋值,
如果对String赋值多次,就会在内存中保存多个这个对象的副本,浪费系统资源

StringBuilder是可变的,不用生成中间对象,拼接字符串比较多,或字符串的长度比较长时有较高的效率。
StringBuilder的内存空间不够也要扩容,如果分配的空间远远大于需要量,也很浪费
所以,初始化StringBuilder的时候最好根据需要设置容量,避免浪费
作者: ☜⑦圊⑥慾➹沼    时间: 2013-9-27 13:39
StringBuilder可以事先分配一段内存拼接字符串用;
而string拼接的时候需要重新分配内存;
字符串拼接频率大StringBuilder是首选,因为系统重新分配内存是很耗时间的。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2