jvm-String

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

一、第一种代码书写方式

    @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需要不停的回收,也是影响效率的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值