Java中StringBuilder的清空方法比较

StringBuilder 没有提供clear或empty方法。
清空有3种方法:
1)新生成一个,旧的由系统自动回收
2)使用delete
3)使用setLength

将三种方法循环1000万次,代码:


1.public class sbbm {

2.

3.    static String a;

4.    static long time ;

5.    public static void main( String[] args ) throws Exception {

6.       

7.         StringBuilder sb = new StringBuilder();

8.         StringBuilder sb3 = new StringBuilder();

9.        

10.         time = System.currentTimeMillis();

11.          for( int i = 0; i < 10000000; i++ ) {

12.              StringBuilder sb2 = new StringBuilder();

13.              sb2.append( "someStr6ing" );

14.              sb2.append( "someS5tring2" );

15.              sb2.append( "some3Strin4g" );

16.              sb2.append( "so3meStr5ing" );

17.              sb2.append( "so2meSt7ring" );

18.              a = sb2.toString();

19.          }

20.          System.out.println( "Way2="+(System.currentTimeMillis()-time) );

21.          

22.

23.        time = System.currentTimeMillis();

24.        for( int i = 0; i < 10000000; i++ ) {

25.            sb.delete( 0, sb.length() );

26.            sb.append( "someString" );

27.            sb.append( "someString2" );

28.            sb.append( "someStrin4g" );

29.            sb.append( "someStr5ing" );

30.            sb.append( "someSt7ring" );

31.            a = sb.toString();

32.        }

33.        System.out.println( "Way1="+(System.currentTimeMillis()-time) );

34.

35.        time = System.currentTimeMillis();

36.        for( int i = 0; i < 10000000; i++ ) {

37.

38.            sb3.setLength( 0 );

39.            sb3.append( "someStr55ing" );

40.            sb3.append( "some44String2" );

41.            sb3.append( "som55eStrin4g" );

42.            sb3.append( "some66Str5ing" );

43.            sb3.append( "so33meSt7ring" );

44.            a= sb3.toString() ;

45.        }

46.        System.out.println( "Way3="+(System.currentTimeMillis()-time) );

47. 

48.     

49.    }

50.}


注意append的字符串要都不相同,否则会因为java 的String  pool对结果造成影响(即3好于2)

结果:


1.Way2=9438

2.Way1=6281

3.Way3=6469

可以将各方法多重复几次,颠倒顺序,等
总体来看:方法2好于方法3好于方法1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java,可以使用StringBuilder的setLength()方法清空StringBuilder对象的内容。例如: StringBuilder sb = new StringBuilder("Hello World"); sb.setLength(); //清空StringBuilder对象的内容 System.out.println(sb.toString()); //输出空字符串 ### 回答2: Java StringBuilder是一种可变的字符串,可以将其看作是一个可变的char数组。StringBuilder在一段字符串的基础上进行修改或添加,可以大大提高程序的效率。但是,使用StringBuilder时需要注意清空内部内容的操作。本文将详细介绍StringBuilder清空的几种方法方法一:使用setLength() StringBuilder有一个setLength()方法,可以通过设置StringBuilder长度为0来清空StringBuilder。代码如下: ``` StringBuilder sb = new StringBuilder(); sb.append("hello"); sb.setLength(0); //清空StringBuilder ``` 方法二:使用delete() StringBuilder还有一个delete()方法,可以通过将整个StringBuilder删除来清空StringBuilder。代码如下: ``` StringBuilder sb = new StringBuilder(); sb.append("hello"); sb.delete(0, sb.length()); //清空StringBuilder ``` 方法三:使用新的StringBuilder对象 对于只需要在某些特定时刻清空StringBuilder的情况,可以使用新的StringBuilder对象来代替当前的StringBuilder对象。代码如下: ``` StringBuilder sb = new StringBuilder(); sb.append("hello"); sb = new StringBuilder(); //清空StringBuilder ``` 需要注意的是,如果在循环使用StringBuilder,请使用前两种方法清空StringBuilder,避免频繁创建新的对象浪费内存。 综上所述,使用setLength()、delete()和新的StringBuilder对象可以清空StringBuilder。选择何种方法应根据具体情况来判断,建议使用setLength()和delete()方法,避免频繁创建新的对象,提高程序效率。 ### 回答3: java,可以使用stringbuilder类concat方法拼接字符串,也可以使用append方法往现有的字符串后面添加新的内容。在一些情况下,如果需要清空已有的字符串,可以使用stringbuilder的setLength方法,将字符串的长度设为0,让已有的内容被覆盖掉。 例如,定义一个stringbuilder对象,往其添加一些内容: ``` StringBuilder sb = new StringBuilder(); sb.append("Hello"); sb.append(" "); sb.append("world!"); System.out.println(sb.toString()); //输出:Hello world! ``` 现在需要清空已有的内容,可以使用setLength方法: ``` sb.setLength(0); System.out.println(sb.toString()); //输出空字符串 ``` 此时,stringbuilder对象的内容已经被清空了。需要注意的是,如果只是将setLength方法的参数设为0,将不会删除对象本身,只会删除其的内容。 另外,如果stringbuilder对象已经被垃圾回收器标记为不再使用,那么调用setLength方法也不能真正清空的内容。因此,如果需要重复使用同一个stringbuilder对象,最好调用setLength(0)方法清空的内容,而不是重新创建一个新的对象。同样,如果需要清空String对象,也可以将其赋值为空字符串(""),让其的内容被覆盖掉。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值