在实际应用中,经常会需要对字符串进行动态修改,这时String类的功能就受到了限制,而StringBuffer类可以完成字符串的动态添加、插入和替换等操作。StringBuffer表示变长的和可写的字符序列。StringBuffer类可以插入其中或追加其后的字符或子字符串,还可以针对这些添加操作自动地增加空间,同时它通常还有比实际需要更多的预留字符,从而允许增加空间。
1.SttingBuffer的构造方法
StringBuffer定义了以下4个构造方法:
•StringBuffer()。
•StringBuffer(int capacity)。
•StringBuffer(String str)。
•StringBuffer(CharSqquence seq)。
第1种形式的构造函数预留了16个字符的空间,该空间不需再分配;第2种形式的构造函数接收一个整数参数,用以设置缓冲区的大小;第3种形式的构造函数接收一个字符串参数,设置StringBuffer对象的初始内容,同时多预留了16个字符的空间;第4种形式的方法在实际编程中很少用到,当没有指定缓冲区的大小时,StringBuffer类会分配16个附加字符的空间,这是因为再分配在时间上代价很大,且频繁地再分配会产生内存碎片。
2.append()方法
对于向已经存在的StringBuffer对象追加任何类型的数据,StringBuffer类提供了相应的append()方法,如下所示:
StringBuffer(char c)
StringBuffer(char[]str)
StringBuffer(String str)
StringBuffer(double d)
……
以上的方法都可以向字符串缓冲区“追加”元素,这个“元素”参数可以是布尔型、字符数组、双精度数、浮点数、整型数、长整型数对象类型的字符串等。如果添加的字符超出了字符串缓冲区的长度,Java语言将自动进行扩充。例如下列代码段:
【例6.5】 写出程序的运行结果。
执行上述代码段,则输出结果为:
1+1=3 false
3.length()和capacity()方法
对于StringBuffer对象来说,有两个很重要的属性,分别是长度和容量。通过调用length()方法可以得到当前StringBuffer的长度,通过调用capacity()方法可以得到总的分配容量。它们的一般形式如下所示:
int length()
int capacity()
【例6.6】 写出程序的运行结果。
StringBuffer sb=new StringBuffer("Hello");
System.out.println("buffer="+sb);
System.out.println("length="+sb.length());(www.daowen.com)
System.out.println("capacity="+sb.capacity());
执行上述代码,则输出结果如下所示:
buffer=Hello
length=5
capacity=21
这个例子很好地说明了StringBuffer是如何为另外的处理预留额外的空间的。
4.insert()方法
insert()方法主要用来将一个字符串插入到另一个字符串中,和append方法一样,它也被重载而可以接收所有简单类型的值。它先调用String类的valueOf方法得到相应的字符串表达式,随后这个字符串被插入到所调用的StringBuffer对象中。insert方法有如下几种形式:
StringBuffer insert(int offset,boolean b)
StringBuffer insert(int offset,char c)
StringBuffer insert(int offset,char[]str)
StringBuffer insert(int index,char[]str,int offset,int len)
StringBuffer insert(int offset,double d)
StringBuffer insert(int offset,String str)
5.reverse()方法
可以使用reverse()方法将StringBuffer对象内的字符串进行翻转,它的一般形式如下:
StringBuffer reverse()
【例6.7】 写出程序的运行结果。
StringBuffer s=new StringBuffer("abcdef");
System.out.println(s);
s.reverse();
System.out.println(s);
代码执行后,输出结果为:
abcdef
fedcba
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。