0%

清空StringBuffer的几种方法

在字符串拼接的时候经常用到StringBuffer,拼接过程中有时需要清空并重用,记录一下清空StringBuffer的几种方法

##delete方法

1
delete(int start, int end)

移除此序列的子字符串中的字符

1
2
3
4
StringBuffer my_StringBuffer = new StringBuffer();
my_StringBuffer.append('helloworld'); //添加字符串到StringBuffer中
int sb_length = my_StringBuffer.length();// 取得字符串的长度
my_StringBuffer.delete(0,sb_length); //删除字符串从0~sb_length-1处的内容 (这个方法就是用来清除StringBuffer中的内容的)

##setLength方法

1
setLength(int newLength)

设置字符序列的长度。

1
my_StringBuffer.setLength(0);   //设置StringBuffer变量的长度为0

##new方法
直接用new清空StringBuffer中的内容

1
my_StringBuffer = new StringBuffer()

##几种方法效率比较
测试程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private static void testStringBufferclear() {
StringBuffer sbf = new StringBuffer("wwwwww");
StringBuffer sbi = new StringBuffer("wwwwww");
long s1 = System.currentTimeMillis();
for (int i = 0; i < 500000; i++) {
sbi.setLength(0);
}
long s11 = System.currentTimeMillis();
System.out.println("StringBuffer-setLength:" + (s11 - s1));
s1 = System.currentTimeMillis();
for (int i = 0; i < 500000; i++) {
sbf.delete(0, sbf.length());
}
s11 = System.currentTimeMillis();
System.out.println("StringBuffer--delete:" + (s11 - s1));
s1 = System.currentTimeMillis();
for (int i = 0; i < 500000; i++) {
sbf = new StringBuffer("");
}
s11 = System.currentTimeMillis();
System.out.println("StringBuffer--new StringBuffer:" + (s11 - s1));
}

测试结果:

1
2
3
StringBuffer-setLength:63
StringBuffer--delete:109
StringBuffer--new StringBuffer:78

测试结论:
要通过使用setLength(0)来清空StringBuffer对象中的内容效率最高。