Java · Medium · Free
String concat in loop — bytecode and performance fix?
JavaTrickyFresher
Concatenation in loops
Using + on String in a loop creates a new String each iteration—quadratic copying. The compiler may optimize single-expression concat with invokedynamic string concat (JDK 9+), but loops still need StringBuilder or joining collectors.
- Bytecode: repeated concat →
StringBuilderin loop at compile time for simple cases, not always for complex loops. - Prefer
StringBuilderorString.join/Collectors.joining. - Logging: pass parameters to SLF4J
{}placeholders—no manual concat. - Microbenchmark with JMH before "optimizing" small loops.
java
StringBuilder sb = new StringBuilder();
for (String part : parts) sb.append(part).append(',');
String csv = sb.substring(0, sb.length() - 1);
// Or: String joined = String.join(",", parts);Interview tip: Mention JDK 9+ dynamic concat for
a + b + c but insist loops use StringBuilder.