關於StringBuilder 的清空問題

StringBuilder 的三種清空方式:

  1. 直接在循環中new StringBuilder ();每次都重新new出來
  2. 使用delete(0,length());清除沒一個元素
  3. 使用setLength( 0 );   長度設置爲 0

直接上測試代碼:

public static void main(String[] args) {

        //第一種方法:-------------------不斷new------------------------------
        StringBuilder stringBuilder = new StringBuilder();
        long start = System.currentTimeMillis();

        for (int i = 0; i < 100000000; i++) {
            stringBuilder = new StringBuilder();

            stringBuilder.append("aaa");
            stringBuilder.append("bbb");
            stringBuilder.append("ccc");
            stringBuilder.append("ddd");
            stringBuilder.append("eee");
        }
        long end = System.currentTimeMillis();
        System.out.println("方法一new:"+(end - start));

        //第二種方法:-----------builder1.delete(0, builder.length());------------

        long start2 = System.currentTimeMillis();
        for (int i = 0; i < 100000000; i++) {
            stringBuilder.delete(0,stringBuilder.length());

            stringBuilder.append("aaa");
            stringBuilder.append("bbb");
            stringBuilder.append("ccc");
            stringBuilder.append("ddd");
            stringBuilder.append("eee");
        }
        long end2 = System.currentTimeMillis();
        System.out.println("方法二delete:"+(end2 - start2));

        //第三種方法:------------------setLength(0);---------------------------

        long start3 = System.currentTimeMillis();
        for (int i = 0; i < 100000000; i++) {
            stringBuilder.setLength(0);

            stringBuilder.append("aaa");
            stringBuilder.append("bbb");
            stringBuilder.append("ccc");
            stringBuilder.append("ddd");
            stringBuilder.append("eee");
        }
        long end3= System.currentTimeMillis();
        System.out.println("方法三setLength:"+(end3 - start3));

    }

測試結果:

 總結:

測試了很多次發現,這三種清空方式,方法二和方法三是差不多的,方法一效率最慢,建議使用方法二;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章