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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨本国 黑马帝   /  2011-11-29 13:38  /  2008 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨本国 于 2011-11-29 20:00 编辑

System.String 和System.StringBuilder有什么区别?

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

3 个回复

倒序浏览
经睿 黑马帝 2011-11-29 13:59:57
沙发
String对象是不可改变的,每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
StringBuilder类表示值为可变字符序列的类似字符串的对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
String类实际上表示的是一系列不可变的字符,无法直接修改给该字符分配的堆中的字符串,每次定义一个string字符串,系统都会为其分配内存空间!
StringBulder位于System.Text命名空间下,使用StringBuilder类,每次重新生成新字符串的时候不是在生成一个新实例,而是直接在原来字符串占用的内存空间上进行处理,而且还可以动态的分配内存空间的大小。

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
String是引用类型,在堆上分配内存。String对象一旦生成就不可改变(Immutable)。String提供了大量便捷的字符串操作函数。String运算时会产生一个新的实例。在程序中第一相等运算符(==和!=),可以方便的比较String对象的值。
StringBuilder对象是动态对象,允许扩充他所封装的字符串中的字符数量。StringBuilder可以用于修改StringBuilder中的内容。

评分

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

查看全部评分

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