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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© shangxin 中级黑马   /  2014-3-18 10:22  /  931 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 shangxin 于 2014-3-18 15:00 编辑

StringBuilder  和String有什么区别啊

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

4 个回复

倒序浏览
String通常用于存储内容很少改变的字符串,内部实现类似数组,优点是占用空间较少,缺点是改写操作代价较大,类比向数组中插入删除元素的操作;
StringBuilder通常用于存储内容经常改变的字符串,内部实现类似链表,与String正好相反,缺点是占用内存空间会比较大,有点是改写操作代价较小,类比通过改变元素指针指向改变链表内容的操作。
以上个人理解……

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
字符串短用String处理,字符串长StringBuilder处理,可以更合理的利用内存.
回复 使用道具 举报
如同Array和ArrayList的区别
回复 使用道具 举报
StringBuilder 类:表示可变字符字符串。 此类不能被继承。
语法:[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class StringBuilder : ISerializable;

String 类:表示文本,即一系列 Unicode 字符。
语法:[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class String : IComparable,
        ICloneable, IConvertible, IComparable<string>, IEnumerable<char>,
        IEnumerable, IEquatable<string>;

虽然 StringBuilder 和 String 两个表示字符序列,它们以不同的方式实现。 String 是不可变的类型。 即看似修改 String 对象的每个操作实际创建新的字符串。
在这些条件下考虑使用 StringBuilder 选件类:
1、当您希望您的应用程序创建一个未知的设置为字符串的更改在设计时 (例如,那么,当您使用循环连接包含用户输入) 的随机数字符串。
2、当您希望您的应用程序创建一个大量为字符串的更改。

在这些条件下考虑使用 String 选件类:
1、当您的应用程序将对字符串更改的数量很小。 在这些情况下,StringBuilder 不可能提供在 String的忽略或性能改进。
2、当执行串联运算的内置的数字,尤其是对于字符串文本。 在这种情况下,编译器可能将串联运算到单个操作。
3、当您必须执行广泛的搜索操作,当您生成字符串时。 StringBuilder 选件类没有搜索方法 (如 IndexOf 或 StartsWith。 您必须转换为 String 的 StringBuilder 对象这些操作的,这样,可以对从使用 StringBuilder的性能。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马