在字符串拼接的时候经常用到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对象中的内容效率最高。