



用String类型定义的字符串,是不可以修改的,表面上看是对字符串所做的修改操作,实际在计算机的内存中都会生成一个新的字符串。而用StringBuilder类型定义的字符串,是可以修改的,所以当需要大量的修改字符串时,可以使用StringBuilder类来定义字符串。
StringBuilder类也称为可变字符串,它位于System.Text命名空间下,之所以称之为可变字符串,是因为该类的对象在通过追加、移除、替换或插入字符串后不会生成新的字符串对象,即字符串变量始终指向同一个对象。
StringBuilder类有6种不同的构造方法,这里列出程序开发中最常用4种,其语法格式如下:
value:StringBuilder对象引用的字符串。
capacity:设定StringBuilder对象的初始大小,即StringBuilder对象的容量。
【例5.16】 创建一一个StringBuilder对象,其初始引用的字符串为“欢乐斗地主!”,代码如下:
StringBuilder sb = new StringBuilder('欢乐斗地主!');
StringBuilder类存在于System.Text命名空间中,如果要创建StringBuilder对象,首先必须引用此命名空间。StringBuilder类中常用的方法及说明如表5.4所示。
表5.4 StringBuilder类中常用的方法及说明
下面通过实例来演示如何使用StringBuilder类中的这5种方法。
【例5.17】 创建一一个控制台应用程序,首先实例化一一个StringBuilder类型的对象sb,其初始值为“出塞”,初始大小为100,然后使用StringBuilder类的Append、AppendFormat、Insert、Remove和Replace方法操作StringBuilder对象。代码如下:
程序的运行结果如图5.10。
图5.10 应用StringBuilder类
String类和StringBuilder类都用来处理字符串,它们之间有着较多相似的常规用法,并且二者之间可以相互转换,这导致许多人在程序设计中不严格区分二者,甚至认为二者基本相同,是可以通用的。但实际情况不然,而是这二者之间的内在差别非常大。下面将对这两个类进行详细区分。
String类型表示Unicode字符的字符串,该类型的字符串对象是只读的,也就是说,一旦创建了某个字符串对象,那么该字符串对象就不能够修改。表面看来能够修改字符串的所有方法,实际上并没有修改原有的字符串,而是生成另外一个全新的字符串对象。
StringBuilder类型表示值为可变字符序列的类似字符串的对象。之所以说值是可变的,是因为可以对StringBuilder对象进行追加、移除、替换或插入字符来对其进行修改,这点与String类型恰恰相反。大多数修改StringBuilder实例的方法都返回对同一实例的引用。由于返回的是对实例的引用,因此可以调用该引用的方法或属性。如果想要编写将连续操作依次连接起来的单个语句,这将很方便。
【例5.18】 下面通过一一个例子来具体看StringBuilder类与String类的区别,首先看下面一一段代码:
上面的代码分别使用String类和StringBuilder类连接字符串,但这两种方法在内存中的操作是不同的,第一种方法在内存中操作时,有3个string类型的(分别为'QQ','农场','QQ农场')变量;而第二种方法在内存中操作时只有一个('QQ农场')变量。
学习手册
提示
当程序中需要大量地对某个字符串进行操作时,应该考虑应用StringBuilder类处理该字符串,其设计目的就是针对大量String操作的一种改进办法,避免产生太多的临时对象。当程序中只是对某个字符串进行一次或几次操作时,采用String类即可。