黑马程序员技术交流社区

标题: StringBuilder 和String有什么区别啊 [打印本页]

作者: shangxin    时间: 2014-3-18 10:22
标题: StringBuilder 和String有什么区别啊
本帖最后由 shangxin 于 2014-3-18 15:00 编辑

StringBuilder  和String有什么区别啊
作者: 鬼鬼    时间: 2014-3-18 11:20
String通常用于存储内容很少改变的字符串,内部实现类似数组,优点是占用空间较少,缺点是改写操作代价较大,类比向数组中插入删除元素的操作;
StringBuilder通常用于存储内容经常改变的字符串,内部实现类似链表,与String正好相反,缺点是占用内存空间会比较大,有点是改写操作代价较小,类比通过改变元素指针指向改变链表内容的操作。
以上个人理解……
作者: zhl406893081    时间: 2014-3-18 11:24
字符串短用String处理,字符串长StringBuilder处理,可以更合理的利用内存.
作者: 张变    时间: 2014-3-18 12:17
如同Array和ArrayList的区别
作者: Max_骏    时间: 2014-3-18 14:56
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的性能。





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