Is there a difference between String concat and the + operator in Java? [duplicate]

There’s no difference in this particular case; however, they’re not the same in general.

str1 += str2 is equivalent to doing the following:

str1 = new StringBuilder().append(str1).append(str2).toString();

To prove this to yourself, just make a simple method that takes two strings and +=‘s the first string to the second, then examine the disassembled bytecode.

By contrast, str1.concat(str2) simply makes a new string that’s the concatenation of str1 and str2, which is less expensive for a small number of concatenated strings (but will lose to the first approach with a larger number).

Additionally, if str1 is null, notice that str1.concat(str2) throws a NPE, but str1 += str2 will simply treat str1 as if it were null without throwing an exception. (That is, it yields “null” concatenated with the value of str2. If str2 were, say, “foo”, you would wind up with “nullfoo”.)


Update: See this StackOverflow question, which is almost identical.

Leave a Comment