Chinaunix首页 | 论坛 | 博客
  • 博客访问: 84007
  • 博文数量: 11
  • 博客积分: 479
  • 博客等级: 下士
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-12 15:34
文章分类
文章存档

2011年(5)

2010年(3)

2009年(3)

分类: Java

2011-04-27 14:49:39

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

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

  1. public class sbbm {

  2.     static String a;
  3.     static long time ;
  4.     public static void main( String[] args ) throws Exception {
  5.         
  6.          StringBuilder sb = new StringBuilder();
  7.          StringBuilder sb3 = new StringBuilder();
  8.         
  9.          time = System.currentTimeMillis();
  10.           for( int i = 0; i < 10000000; i++ ) {
  11.               StringBuilder sb2 = new StringBuilder();
  12.               sb2.append( "someStr6ing" );
  13.               sb2.append( "someS5tring2" );
  14.               sb2.append( "some3Strin4g" );
  15.               sb2.append( "so3meStr5ing" );
  16.               sb2.append( "so2meSt7ring" );
  17.               a = sb2.toString();
  18.           }
  19.           System.out.println( "Way2="+(System.currentTimeMillis()-time) );
  20.            

  21.         time = System.currentTimeMillis();
  22.         for( int i = 0; i < 10000000; i++ ) {
  23.             sb.delete( 0, sb.length() );
  24.             sb.append( "someString" );
  25.             sb.append( "someString2" );
  26.             sb.append( "someStrin4g" );
  27.             sb.append( "someStr5ing" );
  28.             sb.append( "someSt7ring" );
  29.             a = sb.toString();
  30.         }
  31.         System.out.println( "Way1="+(System.currentTimeMillis()-time) );

  32.         time = System.currentTimeMillis();
  33.         for( int i = 0; i < 10000000; i++ ) {

  34.             sb3.setLength( 0 );
  35.             sb3.append( "someStr55ing" );
  36.             sb3.append( "some44String2" );
  37.             sb3.append( "som55eStrin4g" );
  38.             sb3.append( "some66Str5ing" );
  39.             sb3.append( "so33meSt7ring" );
  40.             a= sb3.toString() ;
  41.         }
  42.         System.out.println( "Way3="+(System.currentTimeMillis()-time) );
  43.   
  44.       
  45.     }
  46. }
注意append的字符串要都不相同,否则会因为java 的String  pool对结果造成影响(即3好于2)

结果:
  1. Way2=9438
  2. Way1=6281
  3. Way3=6469

可以将各方法多重复几次,点到顺序,等
总体来看:方法2好于方法3好于方法1
阅读(13612) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~