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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 翟盼盼 高级黑马   /  2013-3-6 22:07  /  2600 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

StringBuilder 和 String 的区别?

评分

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

查看全部评分

6 个回复

倒序浏览
String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String
如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的

评分

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

查看全部评分

回复 使用道具 举报
StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是可以为它可容纳的最大字符数指定一个值。
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。

额 手贱,不小心点到一个踩,,.....

评分

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

查看全部评分

回复 使用道具 举报
  StringBuilder和String对象都可以很方便的处理字符串,他们具备各自的特点,如下:

String具有以下五个特点:

1.  String是引用类型,在堆上分配内存。

2.  String对象一旦生成,就不可改变(Immutable)。

3.  String提供了大量便捷的字符串操作函数。

4.  String运算时会产生一个新的实例。

5. 在程序中定义相等运算符(==)和(!=),可以方便比较String对象的值(而不是引用)。

StringBuilder具有以下两个特点:

StringBuilder对象是动态对象,允许扩充它所封装的字符串中的字符数量。

StringBuilder可以用于修改StringBuilder中的内容。

由于String对象一旦声称,就不可改变,所以每次使用System.String类中的方法时,都需要在内存中创建一个新的字符串对象,这会分配新的空间给新的对象。如果对字符串执行重复修改,创建一个新的String对象导致 的系统开销可能会非常昂贵。如果不创建新的对象,只是修改字符窜,则可以使用StringBuilder类。StringBuilder类型可以很好的解决字符串操作的性能问题,在它声称String对象之前,将不会产生任何String对象。

评分

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

查看全部评分

回复 使用道具 举报
StringBuilder和String都可以处理字符串
String是引用类型,在堆上分配内存。String也是个类,我在API上看到过;String对象的值不能改变;
而StringBuilder对象可以改变

评分

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

查看全部评分

回复 使用道具 举报
在对字符串进行多次增删改查的时候,用string会极度消耗内存,而stringbulider不会

评分

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

查看全部评分

回复 使用道具 举报
主要区别在于内容变更时的处理,如string str = "12345";那么str就在内存中占用一块能放下这个字符串的位置,当你在扩展为str += "6";也就是变成"123456"的时候,string会重新向系统申请一块能放下“123456"的内存空间,这就使得string的字符串操作会频繁的申请内存。而StringBuilder则不会这样,他会自动的向后扩展,不需要频繁的申请内存。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马