1
當前,當javac遇到String連接時,它會將代碼轉換爲使用StringBuilder。例如:繞過字符串連接所需的解決方法
String a = String.valueOf(System.currentTimeMillis());
String b = String.valueOf(System.currentTimeMillis());
String c = String.valueOf(System.currentTimeMillis());
String d = a + b + c + "_IND";
變得像
String d = new StringBuilder().append(a).append(b).append(c).append("_IND");
由於StringBuilder的是沒有明確大小,則使用缺省大小和經常導致expandCapacity在運行時調用默認的尺寸太小。
在分析應用程序時,我們看到很多這樣的操作,例如爲各種HashMaps構建密鑰,爲JSF中的每個元素構建唯一密鑰等,這會導致額外的內存使用量。
有沒有更好的方法來減少這種情況。
既然你只追加currentTimeMillis,你最初的想法是StringBuilder的大小不是?有些東西_like_新的StringBuilder(System.currentTimeMillis()。toString()。length * 3 + 4) –
沒有,這只是一個例子,每次他們使用字符串生成器時可以使用任何東西來進行concatination –
[最有效的初始容量大小爲StringBuilder?](http://stackoverflow.com/questions/13360229/most-efficient-initial-capacity-size-for-stringbuilder) – Jeremy