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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蜗牛阿布 中级黑马   /  2014-7-22 00:41  /  1446 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 蜗牛阿布 于 2014-7-23 11:26 编辑

如题,string 和 StringBuilder 有什么区别?不是很理解,希望理解的伙伴解释一下:)

评分

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

查看全部评分

4 个回复

倒序浏览
1. String在进行运算时(如赋值,拼接)会产生一个新的实例,而StringBuilder则不会;
2.如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类;
3.String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没有错,但是在.NET框架下,这个操作实在是划不来,因为系统先市把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去,耗了不少时间。
4.而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Apeend方法,能够在已有对象的原地进行字符串的修改,简单而且直接。

评分

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

查看全部评分

回复 使用道具 举报 2 0
我的理解就是:string是引用类型,字符串一旦创建,就不能修改它;
StringBuilder可以修改, StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应该把它与当前StringBuilder 对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder 类的带有字符串“Hello”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定 StringBuilder 类的容量。

评分

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

查看全部评分

回复 使用道具 举报
路过,学习一下
回复 使用道具 举报
2L正解,通熟易懂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马