13.10 StringBuffer StringBuffer是提供了大量的字符串功能的字符串(String)类的对等类。正如你所知,字符串(String)表示了定长,不可变的字符序列。相反,StringBuffer表示了可变长的和可写的字符序列。StringBuffer可有插入其中或追加其后的字符或子字符串。StringBuffer可以针对这些添加自动地增加空间,同时它通常还有比实际需要更多的预留字符,从而允许增加空间。Java大量使用这两种类,但是多数程序员仅仅处理字符串(String)而通过重载+运算符让Java在后台处理StringBuffer。 13.10.1 StringBuffer构造函数 StringBuffer定义了下面三个构造函数: StringBuffer( ) StringBuffer(int size) StringBuffer(String str) 默认构造函数(无参数)预留了16个字符的空间。该空间不需再分配。第二种形式接收一个整数参数,清楚地设置缓冲区的大小。第三种形式接收一个字符串(String)参数,设置StringBuffer对象的初始内容,同时不进行再分配地多预留了16个字符的空间。当没有指定缓冲区的大小时,StringBuffer分配了16个附加字符的空间,这是因为再分配在时间上代价很大。而且频繁地再分配可以产生内存碎片。StringBuffer通过给一些额外的字符分配空间,减少了再分配操作发生的次数。 13.10.2 length( )和capacity( ) 通过调用length( )方法可以得到当前StringBuffer的长度。而通过调用capacity( )方法可以得到总的分配容量。它们的一般形式如下: int length( ) int capacity( ) 这里是一个例子: // StringBuffer length vs. capacity. class StringBufferDemo { public static void main(String args[]) { StringBuffer sb = new StringBuffer("Hello"); System.out.println("buffer = " + sb); System.out.println("length = " + sb.length()); System.out.println("capacity = " + sb.capacity()); } } 下面是这个程序的输出,它说明了StringBuffer如何为另外的处理预留额外的空间: buffer = Hello length = 5 capacity = 21 由于sb在创建时由字符串“Hello”初始化,因此它的长度为5。因为给16个附加的字符自动增加了存储空间,因此它的存储容量为21。
<<上一页
1
2
3
4
5
6
7
8
9
10
11
12
下一页>>
|