A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© _Water 中级黑马   /  2014-4-13 20:48  /  736 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 _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. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

1 个回复

倒序浏览
StringBuilder的前身是StringBuffer····················
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马