A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 段朝骞 中级黑马   /  2013-9-27 01:39  /  3541 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 段朝骞 于 2013-9-27 16:14 编辑

如题,StringBuilder和List〈string〉在使用上,效率上,应用上有什么区别,哪个比较常用些

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

5 个回复

倒序浏览
StringBuilder 可变字符串,一般用于大量对字符串拼接或进行操作时。在它的类内部,实现了很多方法,可以在原有的实例上进行操作,string在运算时会产生新的实例,StringBuilder比string更占有优势。

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

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

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

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

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




点评

谢谢了  发表于 2013-9-27 16:14

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
刚才运行了下,List<StringBuilder>可以的。
回复 使用道具 举报 1 0
String是固定不变的,在进行字符串连接的时候是新建一个字符串,进行连接后,最后赋值,
如果对String赋值多次,就会在内存中保存多个这个对象的副本,浪费系统资源

StringBuilder是可变的,不用生成中间对象,拼接字符串比较多,或字符串的长度比较长时有较高的效率。
StringBuilder的内存空间不够也要扩容,如果分配的空间远远大于需要量,也很浪费
所以,初始化StringBuilder的时候最好根据需要设置容量,避免浪费

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
StringBuilder可以事先分配一段内存拼接字符串用;
而string拼接的时候需要重新分配内存;
字符串拼接频率大StringBuilder是首选,因为系统重新分配内存是很耗时间的。

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马