zoukankan      html  css  js  c++  java
  • 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

    http://blog.csdn.net/roserose0002/article/details/6972391

  • 相关阅读:
    rails采用MongoDB感觉相当不错!
    LWC: 将VF页面显示在LWC中
    Salesforce: System.TypeException: Invalid integer: 2185340704
    Salesforce: Report没有权限访问
    Maven Archetype 多 Module 自定义代码脚手架
    2021年度总结
    [转摘]Lucene学习总结之一:全文检索的基本原理
    DataTable.Rows.Remove(row) 与 DataTable.Rows[i].Delete()区别
    Lucene.net根据Sort走到了不同的类处理
    调用腾讯QQ天气预报的JS代码
  • 原文地址:https://www.cnblogs.com/cmblogs/p/4368819.html
Copyright © 2011-2022 走看看