I'll anwser to another, clearer question: how many String instances are involved in the following code snippet:
String s="";
s+=new String("a");
s+="b";
And the answer is 6:
- the empty String literal:
"";
- the String literal
"a";
- the copy of the String literal "a":
new String("a");
- the String created by concatenating
s and the copy of "a";
- the String literal
"b"
- the String created by concatenating
s and "b".
If you assume that the three String literals have already been created by previously-loaded code, the code snippet thus creates 3 new String instances.