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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hunter 初级黑马   /  2013-4-1 10:32  /  1659 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

StringBuilder String 的区别?两个使用是好像没什么不同呀

评分

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

查看全部评分

10 个回复

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

评分

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

查看全部评分

回复 使用道具 举报
String 在进行运算时(如赋值、拼接等)会产生一个新的实例
而 StringBuilder 则不会
回复 使用道具 举报
本帖最后由 管章鹏 于 2013-4-5 17:57 编辑

在进行大量字符串拼接的时候,string的问题:
1.内存浪费,产生大量的垃圾内存。
2.由于String的不可变性,每次拼接都会创建一个新的string对象,每次创建新对象的时候,本身也是比较耗时耗资源的。所以造成了使用string拼接字符串性能极其低下。
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,
则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。可以这么说stringbuilder是一个拼接字符串的工具
因为他是一个stringbuilder类型,所以在使用的时候最好都要Tostring()。

希望对你有所帮助!

评分

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

查看全部评分

回复 使用道具 举报
      String 类是一种传统的修改字符串的方式,它可以完成把一个字符串添加到另一个字符串上的工作,但是在.Net 框架下,这个操作实在是划不来.因为系统先是把两个字符串写入内存,接着删除原来的String 对象,然后再创建一个String 对象,并读取内存中的数据赋给该对象.这一来二去的,耗费资源和时间。
      StringBuilder 类(位于System.Text命名空间下)提供的Append 方法,能够在已有对象的基础上进行字符串的修改,简单而且直接。String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而StringBuilder 则不会,因此进行大量的字符串拼接或频繁对某一字符串操作时最好使用StringBuilder。

评分

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

查看全部评分

回复 使用道具 举报
简单的说string是引用类型,具有不可变性
如: string  str="Hello";  //str变量指向"Hello"
       str="World";  //改变了str的指向,指向"World",而原来的字符串"Hello"仍然存在,只是没有变量指向它                  
对很长的或需要频繁操作的字符串,往往消耗大量的资源
而StringBuilder允许直接修改字符串本身的内容,而不是每次操作都生成新的字符串

评分

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

查看全部评分

回复 使用道具 举报
学了了哈!不错
回复 使用道具 举报
学习了。
回复 使用道具 举报
本帖最后由 黑马田杰 于 2013-4-5 22:00 编辑

看一下性能比较就知道以后拼接字符串该用哪个了:

String与StringBuilder拼接字符串性能比较.png (32.66 KB, 下载次数: 8)

String与StringBuilder拼接字符串性能比较.png

评分

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

查看全部评分

回复 使用道具 举报
如果有问题的话可以继续提问,如果问题解决了,可以将问题改为“已解决”,谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马