jvm-String

  • Post author:
  • Post category:其他



实际开发中,我们编写不同的代码,即使是同一个意思,但是往往效率是不一样的。

一、第一种代码书写方式

    @Test
    public void test6(){

        long start = System.currentTimeMillis();

        method2(100000);//7

        long end = System.currentTimeMillis();

        System.out.println("花费的时间为:" + (end - start));
    }

    public void method2(int highLevel){
        //只需要创建一个StringBuilder
        StringBuilder src = new StringBuilder();
        for (int i = 0; i < highLevel; i++) {
            src.append("a");
        }
//        System.out.println(src);
    }

二、第二种代码书写方式

    @Test
    public void test6(){

        long start = System.currentTimeMillis();

          method1(100000);//4014


        long end = System.currentTimeMillis();

        System.out.println("花费的时间为:" + (end - start));
    }



    public void method1(int highLevel){
        String src = "";
        for(int i = 0;i < highLevel;i++){
            src = src + "a";//每次循环都会创建一个StringBuilder、String
        }
//        System.out.println(src);

    }


最终比较二者的执行时间,前者是4400  后者是47,差别也太大了!

1、后者只创建一个对象,然后做拼接,前者不同的创建StringBuilder  最后还.toString

2、前者创建了太多的对象,在堆中,gc需要不停的回收,也是影响效率的



版权声明:本文为wumingdu1234原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。