简答+拼接优化

每次用”+”拼接,都会生成一个新的String。特别在循环拼接字符串的场景下,性能损失是极其严重的:

编译器会不会帮我们进行优化呢。

简单模式

编译器 :IDEA
JDK 版本 :1.8

源代码// 节选了部分代码

   String ss = "191823617";
        int cellid = Integer.parseInt(ss);
        System.out.println(cellid / 256);
        System.out.println(cellid % 256);
         int endid = cellid / 256;
         int lcrid = cellid % 256;
        String cgi="460-00-"+endid+"-"+lcrid;

对生成的class文件进行反编译

    String ss = "191823617";
        int cellid = Integer.parseInt(ss);
        System.out.println(cellid / 256);
        System.out.println(cellid % 256);
        int endid = cellid / 256;
        int lcrid = cellid % 256;
        (new StringBuilder()).append("460-00-").append(endid).append("-").append(lcrid).toString();

可以看到编译优化阶段,会对String ‘+’ 进行优化。
复杂的场景大家可以测试下。所以对一些简单拼接 可以大胆的 +++

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐