As you certainly now, string concatenation in Java can be achieved using the « + » operator like that :
String parText = "This " + "is " + "a full text"; parText = parText + " in a new String object";
But each time you try to concat the string in a new line a new String object is created, therefor the String concatenation may end up as being a performance issue.
To fix this we use two types of objects : StringBuilder and StringBuffer. Then you can translate your String (e.g. a SQL Query) into :
StringBuilder stb = new StringBuilder(); stb.append("This "); stb.append("is "); stb.append("a full text"); stb.append(" in a new String object");
The main differences between StringBuilder and StringBuffer is that the last one is synchronized and may be used in a multi-threaded context while the other one won’t have any type of synchronization. Luckily when you try to concatenate multiple string items, Eclipse IDE, (if you ask it by typing Ctrl + 1), will ask you if you need to translate it to a StringBuilder object :
But nowadays, if you’re careful and know what you’re doing, you can avoid typing this kind of « ultra verbose » way of dealing with strings. Actually since Java 1.5 String concatenations when they’re done on a whole line, are directly translated by Java Compiler, but if you jump onto another line and keep on concatenating the same String, optimization will be lost. E.g. :
// this way StringBuilder stb = new StringBuilder(); stb.append("This "); stb.append("is "); stb.append("a full text"); stb.append(" in a new String object"); // and this one are equivalent String parText = "This " + "is " + "a full text" + " in a new String object"; // but this one isn't : String parText2 = "This " + "is " + "a full text"; parText2 = parText2 + " in a new String object";