Gerardo
Gerardo

Reputation: 5830

Android/Java Append String + int

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

Upvotes: 5

Views: 9758

Answers (2)

bakkal
bakkal

Reputation: 55448

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;

StringBuilder 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

Upvotes: 13

Peter Lawrey
Peter Lawrey

Reputation: 533880

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.

Upvotes: 0

Related Questions