黑马程序员技术交流社区
标题:
StringBuilder 和 String 的区别
[打印本页]
作者:
翟盼盼
时间:
2013-3-6 22:07
标题:
StringBuilder 和 String 的区别
StringBuilder 和 String 的区别?
作者:
安玉波
时间:
2013-3-6 22:19
String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String
如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的
作者:
HM张扬
时间:
2013-3-6 22:51
StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是可以为它可容纳的最大字符数指定一个值。
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
额 手贱,不小心点到一个踩,,.....
作者:
戴乾刚
时间:
2013-3-6 23:13
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对象。
作者:
张卫刚
时间:
2013-3-6 23:40
StringBuilder和String都可以处理字符串
String是引用类型,在堆上分配内存。String也是个类,我在API上看到过;String对象的值不能改变;
而StringBuilder对象可以改变
作者:
李晓泉
时间:
2013-3-7 00:53
在对字符串进行多次增删改查的时候,用string会极度消耗内存,而stringbulider不会
作者:
吕振
时间:
2013-3-7 00:59
主要区别在于内容变更时的处理,如string str = "12345";那么str就在内存中占用一块能放下这个字符串的位置,当你在扩展为str += "6";也就是变成"123456"的时候,string会重新向系统申请一块能放下“123456"的内存空间,这就使得string的字符串操作会频繁的申请内存。而StringBuilder则不会这样,他会自动的向后扩展,不需要频繁的申请内存。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2