黑马程序员技术交流社区
标题:
StringBuilder 和 String 的区别?
[打印本页]
作者:
hunter
时间:
2013-4-1 10:32
标题:
StringBuilder 和 String 的区别?
StringBuilder
和
String
的区别?两个使用是好像没什么不同呀
作者:
hunter
时间:
2013-4-1 10:33
麻烦了哈
作者:
guobin_lu
时间:
2013-4-1 10:33
String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String
如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。
作者:
DWC_5101
时间:
2013-4-1 13:09
String 在进行运算时(如赋值、拼接等)会产生一个新的实例
而 StringBuilder 则不会
作者:
管章鹏
时间:
2013-4-1 14:17
本帖最后由 管章鹏 于 2013-4-5 17:57 编辑
在进行大量字符串拼接的时候,string的问题:
1.内存浪费,产生大量的垃圾内存。
2.由于String的不可变性,每次拼接都会创建一个新的string对象,每次创建新对象的时候,本身也是比较耗时耗资源的。所以造成了使用string拼接字符串性能极其低下。
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,
则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。可以这么说stringbuilder是一个
拼接字符串的工具
;
因为他是一个stringbuilder类型,所以在使用的时候最好都要Tostring()。
希望对你有所帮助!
作者:
张正强
时间:
2013-4-1 17:07
String 类是一种传统的修改字符串的方式,它可以完成把一个字符串添加到另一个字符串上的工作,但是在.Net 框架下,这个操作实在是划不来.因为系统先是把两个字符串写入内存,接着删除原来的String 对象,然后再创建一个String 对象,并读取内存中的数据赋给该对象.这一来二去的,耗费资源和时间。
StringBuilder 类(位于System.Text命名空间下)提供的Append 方法,能够在已有对象的基础上进行字符串的修改,简单而且直接。String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而StringBuilder 则不会,因此进行大量的字符串拼接或频繁对某一字符串操作时最好使用StringBuilder。
作者:
熊薇
时间:
2013-4-1 20:35
简单的说string是引用类型,具有不可变性
如: string str="Hello"; //str变量指向"Hello"
str="World"; //改变了str的指向,指向"World",而原来的字符串"Hello"仍然存在,只是没有变量指向它
对很长的或需要频繁操作的字符串,往往消耗大量的资源
而StringBuilder允许直接修改字符串本身的内容,而不是每次操作都生成新的字符串
作者:
郑丹丹1990
时间:
2013-4-5 19:03
学了了哈!不错
作者:
孔健
时间:
2013-4-5 20:51
学习了。
作者:
黑马田杰
时间:
2013-4-5 21:50
本帖最后由 黑马田杰 于 2013-4-5 22:00 编辑
看一下性能比较就知道以后拼接字符串该用哪个了:
String与StringBuilder拼接字符串性能比较.png
(32.66 KB, 下载次数: 32)
下载附件
2013-4-5 22:00 上传
作者:
管章鹏
时间:
2013-4-6 10:42
如果有问题的话可以继续提问,如果问题解决了,可以将问题改为“已解决”,谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2