String与StringBuffer的区别

public  class  Perf  {  
   public  static  String  detab1(String  s)  
   {  
       if  (s.indexOf('/t')  ==  -1)  
           return  s;  
       String  res  =  "";  
       int  len  =  s.length();  
       int  pos  =  0;  
       int  i  =  0;  
       for  (;  i  <  len  &&  s.charAt(i)  ==  '/t';  i++)    
       {  
           res  +=  "                ";  
           pos  +=  8;  
       }  
       for  (;  i  <  len;  i++)    
       {  
           char  c  =  s.charAt(i);  
           if  (c  ==  '/t')  {  
               do  {  
                   res  +=  "  ";  
                   pos++;  
               }  while  (pos  %  8  !=  0);  
           }  
           else  {  
               res  +=  c;  
               pos++;  
           }  
       }  
       return  res;  
   }  
             
   public  static  String  detab2(String  s)  
   {  
       if  (s.indexOf('/t')  ==  -1)  
           return  s;  
       StringBuffer  sb  =  new  StringBuffer();  
       int  len  =  s.length();  
       int  pos  =  0;  
       int  i  =  0;  
       for  (;  i  <  len  &&  s.charAt(i)  ==  '/t';  i++)    
       {  
           sb.append("                ");  
           pos  +=  8;  
       }  
       for  (;  i  <  len;  i++)  {  
           char  c  =  s.charAt(i);  
           if  (c  ==  '/t')  {  
               do  {  
                   sb.append('  ');  
                   pos++;  
               }  while  (pos  %  8  !=  0);  
           }  
           else  {  
               sb.append(c);  
               pos++;  
           }  
       }  
       return  sb.toString();  
   }  
                 
   public  static  String  testlist[]  =  {  
       "",  
       "/t",  
       "/t/t/tabc",  
       "abc/tdef",  
       "1234567/t8",  
       "12345678/t9",  
       "123456789/t"  
   };  
                 
   public  static  void  main(String  args[])  
   {  
       for  (int  i  =  0;  i  <  testlist.length;  i++)  {  
           String  tc  =  testlist[i];  
           if  (!detab1(tc).equals(detab2(tc)))  
               System.err.println(tc);  
         }  
                 
         String  test_string  =  
             "/t/tthis  is  a  test/tof  detabbing  performance";  
         int  N  =  5000;  
         int  i  =  0;  
                 
         long  ct  =  System.currentTimeMillis();  
         for  (i  =  1;  i  <=  N;  i++)  
             detab1(test_string);  
         long  elapsed  =  System.currentTimeMillis()  -  ct;  
         System.out.println("String  time  =  "  +  elapsed);  
                   
         ct  =  System.currentTimeMillis();  
         for  (i  =  1;  i  <=  N;  i++)  
             detab2(test_string);  
         elapsed  =  System.currentTimeMillis()  -  ct;  
         System.out.println("StringBuffer  time  =  "    
             +  elapsed);  
     }  
}
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值