The main way to concatenate two String in Java is using the + operator. It creates a new String Object using the 2 Strings as input. This method is memory intensive as a new String Object is created and adds more load on the garbage collection.
String out = "aa" + " " + "bb";
System.out.println(out);
A StringBuilder doesn't create a new Object every time a String is added to the current String and is not synchronized. It gives better performance.
StringBuilder sb = new StringBuilder();
sb.append("aa");
sb.append(" ");
sb.append("bb");
String out = sb.toString();
System.out.println(out);
Since Java 8, a StringJoiner concatenates Strings using a value separator. It's usage is similar to using a list.
StringJoiner sj = new StringJoiner(" ");
sj.add("aa");
sj.add("bb");
String out = sj.toString();
The StringJoiner can be used in conjunction with a List: It is converted to a Stream. That Stream is then collected using a StringJoiner and a String is returned.
List<String> l = new ArrayList<>();
l.add("aa");
l.add("bb");
String out = l.stream().collect(Collectors.joining(" "));