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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Destiny.

中级黑马

  • 黑马币:0

  • 帖子:16

  • 精华:0

本帖最后由 Destiny. 于 2013-10-29 13:20 编辑

比较String与StringBuilder两者有什么不同。氛围一下4个方面:

1.存储空间
2.父类/基类是什么
3.占用内存的大小(运行快慢)
4.应用范围


记忆可能有偏差,大概是这4个方向。

8 个回复

倒序浏览
String是不可变对象,一旦被创建,就不能修改它的值   也就是没对string附一次值都会在堆里开辟一个内存空间。
StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
string继承于object stringbuiler继承与system.Text
回复 使用道具 举报
1、string是引用类型,在堆上分配内存
2、stringBuilder的父类是System.Object\System.Text
        string的父类是System.Object
3、String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String
4、量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
1.string和StringBuilder的值都存储在堆中。
2.string继承于object, stringbuiler继承于system.Text
3.string变量改变时需要在内存中再开一块空间,然后重新指向新的字符串,而StringBuilder始终对一块内存进行操作。所以在字符串进行拼接的时候比较快,建议进行大规模字符串拼接时使用StringBuilder。

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
问题解决请将分类设为"已解决".黑马有你更精彩
回复 使用道具 举报
李洋 中级黑马 2013-10-28 10:44:28
7#
System.String具有以下五个特点:

1.  String是引用类型,在堆上分配内存。

2.  String对象一旦生成,就不可改变(Immutable)。

3.  String提供了大量便捷的字符串操作函数。

4.  String运算时会产生一个新的实例。

5. 在程序中定义相等运算符(==)和(!=),可以方便比较String对象的值(而不是引用)。

StringBuilder具有以下两个特点:

StringBuilder对象是动态对象,允许扩充它所封装的字符串中的字符数量。

StringBuilder可以用于修改StringBuilder中的内容
回复 使用道具 举报
我就从你说的这几个方面帮你总结一下
回复 使用道具 举报
我就从你说的这几个方面总结一下:
   1.String的存储空间是不可以发生变化的,而StringBuilder是可变的,如 拼接字符串时 String会从新分配内存,而StringBuilder不会分配

  2.String的基javascript:;类是System   ,StringBuilder的基类是System.Text

  3.在拼接字符串时,StringBuilder的运行速度比String快 ,因为String 在拼接字符串时 会产生新的字符串中间变量,这样就会给系统产生不必要的系统开销,可不要小看这一点开销哦。

  4.一般  在拼接字符串以及修改字符串中的某个字符 时使用StingBuilder,其他地方就没有多大的区别
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马