黑马程序员技术交流社区

标题: StringBuilder和String有什么区别呀? [打印本页]

作者: 幸福的彼岸    时间: 2014-1-15 10:08
标题: StringBuilder和String有什么区别呀?
本帖最后由 幸福的彼岸 于 2014-1-15 14:54 编辑

StringBuilder和String有什么区别呀?
作者: 念~    时间: 2014-1-15 10:25
在进行累加操作时,StringBuilder利用Append方法实现,拥有比string快很多的优势,累加次数越多,优势越明显。对于string类型系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象,而StringBuilder则是在原有字符串的基础 上进行累计,而不会多次创建对象

在操作大量字符串,特别是拼接的时候最后是StringBulider效率高,内存占用率小,string会产生很多中间字符串,耗费内存,而且StringBulider还有其他很多方法,增删改查相比string方便的多
作者: 许庭洲    时间: 2014-1-15 10:33
1. String在进行运算时(如赋值,拼接等)会产生一个新的实例,而StringBuilder则不会。所以在大量字符串拼接或频繁对某一个字符串进行操作时最好使用StringBuilder,不要使用String;
2. 如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。
3. 两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。
4. 因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这样一来二去的,耗了不少时间。
5. 而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。


作者: -淡然一笑    时间: 2014-1-15 13:04
1.在.NET中String是不可改变对象,一旦创建了一个String对象并为它赋值,它就不可能再改变,也就是你不可能改变一个字符串的值
2.String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间。这样就引出StringBuilder对象,StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能
作者: 矫情    时间: 2014-1-15 13:07
String 对象是恒定不变的,而StringBuilder则是可变的

StringBuilder是.NET提供的动态创建String对象的高效方式,以克服String对象恒定性带来的性能 影响 。

如果只是单一的对一个string对象做少量几次的操作,则用string 对象

如果需要大量的字符拼接时,这时就一定要用StringBulder对象

因为String 对象的恒定性,创建一个字符后,其不会再改变,对于string的操作都会重新 生成一个新副本

而stringBuilder则是针对同一字符对象做处理,只会生成一个对象。

所以在不同情况下要用不同的对象

作者: 沈可    时间: 2014-1-15 14:03
String类有不可改变性。每次执行字符操作时,都会创建一个新的String对象。  StringBuilder 类解决了对字符串进行重复修改的过程中创建大量对象的问题。初始化一个StringBuilder 之后,它会自动申请一个默认的StringBuilder 容量(默认值是16),这个容量是由Capacity来控制的.并且允许,我们根据需要来控制Capacity的大小,也可以通过Length来获取或设置StringBuilder 的长度.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2