String + 簡單模式下的優化

簡答+拼接優化

每次用”+”拼接,都會生成一個新的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 ‘+’ 進行優化。
複雜的場景大家可以測試下。所以對一些簡單拼接 可以大膽的 +++

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