• 两种构造 String 的方法效率比较


    直接上代码吧:

    package mm_test;
    
    /**
     * @Function: TODO ADD FUNCTION. <br/>
     * @Date: 2016年4月14日 下午8:25:43
     *
     * @author zhangmengmeng01@baidu.com
     */
    public class TerminationCondition {
    
        public static void main(String[] args) {
            
    
            long start1 = System.currentTimeMillis();
            String res1 = "";
            for (int i = 1; i < 100000; i++) {
                res1 += i;
            }
            System.out.println(System.currentTimeMillis()-start1);
            
            long start2 = System.currentTimeMillis();
            StringBuilder res2 = new StringBuilder();
            for(int i=1;i<100000;i++){
                res2.append(i);
            }
            System.out.println(System.currentTimeMillis()-start2);
            
    
        }
    }

    输出结果如下:

    19143

    47

    两种构造字符串的方式,时间开销差的是好几个数量级。究其原因呢,第一种构造字符串的方式使用了重载操作符『+』,会不断的 new一个String Builder 对象,时间开销自然很大。

    第二种构造字符串的方法,只生成了一个 StringBuilder对象,相当于原数组修改,时间开销自然少。

    因此,当你为一个类编写 toString 方法时,如果字符串操作比较简单,可以考虑用+。

    如果再 toString 方法中使用循环,那么最好自己创建一个 StringBuilder 对象,用它来构造最终的结果。

  • 相关阅读:
    BZOJ 1907: 树的路径覆盖
    BZOJ 1295: [SCOI2009]最长距离
    BZOJ 1303: [CQOI2009]中位数图
    BZOJ 1468: Tree
    BZOJ 3784: 树上的路径
    BZOJ 2006: [NOI2010]超级钢琴
    BZOJ 1831: [AHOI2008]逆序对
    BZOJ 2521: [Shoi2010]最小生成树
    HDU 6685 Rikka with Coin (枚举 思维)
    HDU 6659 Acesrc and Good Numbers (数学 思维)
  • 原文地址:https://www.cnblogs.com/sonofelice/p/5392927.html
Copyright © 2020-2023  润新知