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