黑马程序员技术交流社区

标题: 对于字符串频繁操作 [打印本页]

作者: _Water    时间: 2014-4-13 20:48
标题: 对于字符串频繁操作
本帖最后由 _Water 于 2014-4-13 20:50 编辑

字符串频繁操作下:StringBuffer、StringBuilder效率都要比用String高的多,测试代码:
The 0 [  String:1096    StringBuffer:1  StringBuilder:1 ]
The 1 [  String:1093    StringBuffer:0  StringBuilder:1 ]
The 2 [  String:1058    StringBuffer:0  StringBuilder:0 ]
The 3 [  String:1063    StringBuffer:0  StringBuilder:0 ]
The 4 [  String:1058    StringBuffer:0  StringBuilder:1 ]
The 5 [  String:1037    StringBuffer:1  StringBuilder:0 ]
The 6 [  String:1048    StringBuffer:0  StringBuilder:1 ]
The 7 [  String:1033    StringBuffer:0  StringBuilder:0 ]
The 8 [  String:1041    StringBuffer:1  StringBuilder:0 ]
The 9 [  String:1049    StringBuffer:0  StringBuilder:0 ]
  1. class Test
  2. {
  3.         private final int LOOP_TIMES=5000;
  4.         private final String CONSTANT_STRING ="abcdefghijklmnopqrstuvwxyz";
  5.         public static void main(String[] args)
  6.         {
  7.                 new Test().startup();
  8.         }

  9.         public static void sop(String str)
  10.         {
  11.                 System.out.print(str);
  12.         }

  13.         public  void StrTest()
  14.         {
  15.                
  16.                 String str="";
  17.                 long lstart1=System.currentTimeMillis();
  18.                
  19.                 for (int x =0;x<LOOP_TIMES ;x++ )
  20.                 {
  21.                         str+=CONSTANT_STRING;
  22.                 }
  23.                 long lend1=System.currentTimeMillis();
  24.                 long span1=lend1-lstart1;

  25.                 sop("String:"+span1);
  26.         }

  27.         public  void StrBufferTest( )
  28.         {
  29.                
  30.                 StringBuffer sb =new StringBuffer();
  31.                 long lstart2=System.currentTimeMillis();
  32.                 for (int i =0;i<LOOP_TIMES ;i++ )
  33.                 {
  34.                         sb.append(CONSTANT_STRING);
  35.                 }
  36.                 long lend2=System.currentTimeMillis();

  37.                 long span2=lend2-lstart2;

  38.                 sop("StringBuffer:"+span2);

  39.         }

  40.         public void StrBuilderTest()
  41.         {
  42.                 long lstart3=System.currentTimeMillis();
  43.                 StringBuilder builder=new StringBuilder();
  44.                 for (int i =0;i<LOOP_TIMES ;i++ )
  45.                 {
  46.                         builder.append(CONSTANT_STRING);
  47.                 }
  48.                 long lend3=System.currentTimeMillis();
  49.                 sop("StringBuilder:"+(lend3-lstart3));
  50.         }
  51.         public  void startup()
  52.         {
  53.                 for (int i =0;i<10 ;i++ )
  54.                 {
  55.                         sop("The "+i+" [\t ");
  56.                         StrTest();
  57.                         sop("\t");
  58.                         StrBufferTest();
  59.                         sop("\t");
  60.                         StrBuilderTest();
  61.                         sop("\t");
  62.                         sop("]");
  63.                         System.out.println();
  64.                 }
  65.         }
  66. }
复制代码



作者: Kelvinhu    时间: 2014-4-13 21:20
StringBuilder的前身是StringBuffer····················




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2