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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

System.String 和System.StringBuilder有什么区别?平时该用哪个?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

8 个回复

倒序浏览
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。平时是string就够了,如果你要不断拼接字符串就使用StringBuilder。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
字符串是常量;它们的值在创建之后不能改变。
字符串缓冲区支持可变的字符串。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
通常我们使用String,但是如果要动态构建一个字符串,建议使用StringBuilder,性能会比较好

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
strig类是不可变类,任何对string的改变都会引发新的string对象的生成。
StringBuilder类是可变类,对StringBuilder改变都不会产生新的对象。
看需求了而定,不过一般都使用string,但是如果你要动态地构建一个字符串,建议使用StringBuilder,效率高。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
String:为不可变对象,一旦被创建,就不能修改它的值.
StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
字符串连接操作中StringBuffer的效率要比String高,如果在程序中需要对字符串进行频繁的修改连接操作的话.使用StringBuffer性能会更高.
.

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
管冉 中级黑马 2012-12-25 14:33:58
8#
在进行大量运算的时候System.String比System.StringBuilder需要耗费大量的内存和cpu,
而且运行速度也相对较慢

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
如果你是一个变量的话,用String
如果你是一个字符串拼接,那么建议使用StringBuilder这样效率会高

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马