views:

311

answers:

2

Hi,

i have a question, what is the best way to append ints and Strings to build a new String? In the allocation debug tool i see too much allocations if i use the operator +.

But i have tried also with StringBuffer and there are still too much allocations.

Anyone can help me?

Thanks

+9  A: 

Use StringBuilder or StringBuffer but with adequate initial capacity to avoid re-allocation. The default capacity is 16, so once you exceed that, the data has to be copied into a new bigger place. Use append not +.

int integer = 5;

String s = new StringBuilder(100);
s.append("something");
s.append(integer);
s.append("more text");

Will allocate 100 slots upfront.

Reference: http://developer.android.com/reference/java/lang/StringBuilder.html

Bakkal
A: 

You have specified you need to create a "new String", if you are creating any more objects than that, you should be able to optimise them away.

Note: it may be possible to remove all allocation, but only by passing the StringBuilder or something similar throughout the life of the string your have created. This may or may not be simple depending on how you use it.

Peter Lawrey