String 对象是不可改变的。每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
而 StringBuilder 则不会。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
String:
1、它是引用类型,在堆上分配内存
2、运算时会产生一个新的实例
3、String 对象一旦生成不可改变(Immutable)
3、定义相等运算符(== 和 !=)是为了比较 String 对象的值(而不是引用)
StringBuilder:
StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,