首页 理论教育 Java语言程序设计-StringBuffer类

Java语言程序设计-StringBuffer类

时间:2023-10-18 理论教育 版权反馈
【摘要】:为了便于对字符串进行修改,Java 8 提供了StringBuffer类。第4行代码创建了不带任何字符的StringBuffer对象,并将其赋值给StringBuffer类的引用变量s1,第7 行代码输出s1 的容量为16,第8 行输出s1 的长度为0。StringBuffer类的常用方法如表5-5所示。StringBuffer类类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。但是如果需要对字符串中的字符进行增删改操作时,则使用StringBuffer类。String类重写了Object类的equals方法,而StringBuffer类却没有。

Java语言程序设计-StringBuffer类

String类型的对象一旦创建,其长度和内容是不可以改变的。为了便于对字符串进行修改,Java 8 提供了StringBuffer类。该类的构造方法如表5-4所示。

表5-4 StringBuffer类构造方法表

StringBuffer类的构造方法示例代码如下:

上述代码的运行结果如下:

StringBuffer类的对象不仅有长度length,还有容量capacity。其中,长度是指StringBuffer类对象中字符的个数,而容量是指StringBuffer类对象中可以容纳的字符个数,而且StringBuffer类对象的容量会随着长度的增加而没有规律地增大。

第4行代码创建了不带任何字符的StringBuffer对象,并将其赋值给StringBuffer类的引用变量s1,第7 行代码输出s1 的容量为16,第8 行输出s1 的长度为0。当不指定String Buffer对象的容量时,默认是16,故第7行代码输出16。

第5行代码创建了初始容量为16的StringBuffer类对象,并将其赋值给StringBuffer类的引用变量s2,第9行代码输出s2的容量为16,第10行代码输出s2的长度为0。

第6行代码创建了初始值为“Java”的StringBuffer对象,并将其赋值给StringBuffer类的引用变量s3,第11行代码输出s3的容量为20,第12行代码输出s3的长度为4。

StringBuffer类的常用方法如表5-5所示。

表5-5 StringBuffer类常用方法表

StringBuffer类的构造方法和常用方法示例代码如下:

上述代码的运行结果如下:

第4行代码创建了不带任何字符的StringBuffer对象,并将其赋值给StringBuffer类的引用变量s1。

第5行代码调用toString方法,该方法返回s1对象中的所有字符,因为s1中没有字符,故输出空。(www.xing528.com)

第6行代码通过append方法,向s1中追加“Java”字符串。

第7行代码与第5行代码完全等价,当输出一个对象时,默认调用toString方法,故第7行输出“Java”。

第8行代码通过insert方法,从s1的0索引处添加“Loveo”字符串。

第9行代码输出s1中的字符串为:LoveoJava。

第10行代码删除s1中索引为4的字符,即o。

第11行代码输出s1中的字符串为:LoveJava。

第12行代码删除s1中索引为0~3的字符串。

第13行代码输出s1中的字符串为:Java。

第14行代码将s1中0~3索引处的字符串替换为:avaj。

第15行代码输出s1中的字符串为:avaj。

第16行代码将s1索引为3的字符设置为:J。

第17行代码输出s1中的字符串为:avaJ。

第18行代码将s1中的字符串倒置。

第19行代码输出s1中的字符串为:Java。

从运行结果可以看出,从程序开始到程序结束,都只有一个StringBuffer类的引用对象s1,所有的增、改操作都是在s1上做的修改,不会产生新的StringBuffer类的对象。

StringBuffer类与String类的区别在哪里呢?

(1)该类与String类的最大区别在于它的内容和长度都是可以改变的。StringBuffer类类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。在操作字符串时,如果该字符串仅用于表示数据类型,用String类即可。但是如果需要对字符串中的字符进行增删改操作时,则使用StringBuffer类。

(2)String类重写了Object类的equals方法,而StringBuffer类却没有。

(3)String类的对象可以用操作符“+”进行连接,而StringBuffer类对象却不能。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈