黑马程序员技术交流社区

标题: String和StringBuilder [打印本页]

作者: 曾玉锋    时间: 2012-7-20 07:49
标题: String和StringBuilder
StringBuilder和String的区别
在平时我们在练习的时候,基本都是在用String类进行字符串操作,但资料上说
在大量字符串拼接或频繁对某一字符串进行操作时最好使用StringBuilder,而不要使用String
那么,是否只有在大量字符串拼接和频繁对某一字符串进行操作时,StringBuilder才会显示出优势呢?
除了以上的两种情况,还有哪些情况用StringBuilder有明显优势呢?
作者: 许庭洲    时间: 2012-7-20 08:52
StringBuilder是线程不同步的,通常用于单线程,能够提高效率。
作者: 黄涛    时间: 2012-7-20 09:15
StringBuilder的优势是在String要做很多操作时,如大量的替换和串联,这个时候String每一次操作都会产生一个新的String对象,严重影响性能,而StringBuilder可以避免这个问题。也就是说在操作量不大的情况下,StringBuilder反而是没有性能优势的。
作者: 常静华    时间: 2012-7-20 10:14
StringBuilder的优势应该就是拼接字符串。
String   对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用   System.Text.StringBuilder   类。例如,当在一个循环中将许多字符串连接在一起时,使用   StringBuilder   类可以提升性能。   
作者: 黑马杨凯    时间: 2012-7-21 20:21
我的体会是这样的,在对大数据字符串进行拼接时,使用string,每个拼接的操作都会产生新的字符串出来,如果进行拼接的字符串字符数量很大,而且每回都要给它分配新的空间,把这些全部的都存储进去,耗时耗空间,如果是个10000个字符的字符串,一次追加2个单词,string操作就悲剧了,每次都要存储新生成的10000多字符的字符串。
而StringBuilder不会产生新的字符串,比如追加一部分字符,只是将要追加的2个字符存储进去罢了,对于很长的字符串的确是快。但是对于一般较小的字符串处理,只要不是非常频繁的去生成新的字符串,用string比StringBuilder要稍快些,而且能使用的方法更多,很方便。
作者: 王超    时间: 2012-7-21 21:09
String是一个不可变的字符串,而StringBuilder是一个可变的字符序列
这个String类提供了数值不可改变的字符串
StringBuilder用在字符串缓冲区被单个线程使用的时候
作者: 赵鹏程    时间: 2012-7-21 21:11
当你处理字符串时要大量操作时,比如分割字符串,取字符串的子字符串,连接字符串等等这样要创建很多新的string,string[]对象等,要分配空间,然后再存储,所以用string会很麻烦。处理小量字符串时两者都差不多。
作者: 京鱼龙    时间: 2012-7-21 22:06
String对象是不可改变的。而StringBuilder 对象是动态对象。如果对字符串的运算需求很频繁,那建议用StringBuilder,它的运算效率快,而string运算即占内存,而且运算也慢。
StringBuilder有明显优势除了运算效率高一些外,单线程操作不需要同步应该也算个优势吧。




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