我有一個問題,什麼是最好的方式來追加ints和字符串來建立一個新的字符串?在分配調試工具中,如果我使用operator +,我會看到太多的分配。Android/Java追加字符串+ int
但我也嘗試過使用StringBuffer,並且仍然有太多的分配。
任何人都可以幫到我嗎?
感謝
我有一個問題,什麼是最好的方式來追加ints和字符串來建立一個新的字符串?在分配調試工具中,如果我使用operator +,我會看到太多的分配。Android/Java追加字符串+ int
但我也嘗試過使用StringBuffer,並且仍然有太多的分配。
任何人都可以幫到我嗎?
感謝
使用StringBuilder
或StringBuffer
但爲了避免重新分配足夠的初始容量。默認容量是16,所以一旦超過了,數據就必須複製到一個更大的地方。使用append
而不是+
。
int integer = 5;
StringBuilder s = new StringBuilder(100);
s.append("something");
s.append(integer);
s.append("more text");
將預先分配100個插槽。
參考:您已指定您需要創建一個「新的字符串」,如果要創建任何比這更多的對象http://developer.android.com/reference/java/lang/StringBuilder.html
,你應該能夠優化他們離開。
注意:可能會刪除所有分配,但只能通過在您創建的字符串的整個生命週期中傳遞StringBuilder或類似內容。根據你的使用方式,這可能也可能不簡單。
你可能會喜歡這個,關於細節的討論可能會讓某些東西變得更有效率(包括字節碼解析!)http://stackoverflow.com/questions/2971315/string-stringbuffer-and-stringbuilder/ – bakkal 2010-06-05 01:51:21