Sitemap

The Smart Way to Concatenate Strings in Java (Best Method Revealed!)

3 min readMar 21, 2025

--

Press enter or click to view image in full size

Introduction

String concatenation is a standard operation in Java when working with text-based data. Whether building dynamic messages, logging, or manipulating user input, understanding the best way to concatenate strings can improve code readability and performance.

Get Vaishnavi Agrawal’s stories in your inbox

Join Medium for free to get updates from this writer.

In this blog, we’ll explore different ways to concatenate strings in Java, compare their efficiency, and discuss when to use each method.

1. Using the + Operator (Simple and Readable)

The + operator is the most common and straightforward way to concatenate strings.

String first = "Hello";
String second = " World";
String result = first + second;
System.out.println(result); // Output: Hello World

When to Use:

  • Best for small and simple concatenations.
  • Readable and easy to use.

Performance Consideration:

  • Inefficient in loops, as it creates multiple temporary string objects.

2. Using the concat() Method

The concat() method is a built-in function that performs string concatenation.

String first = "Hello";
String second = " World";
String result = first.concat(second);
System.out.println(result); // Output: Hello World

When to Use:

  • When concatenating a small number of strings.
  • Slightly better than + in terms of performance.

3. Using StringBuilder (Efficient for Multiple Concatenations)

StringBuilder is the most efficient way to concatenate strings, especially inside loops.

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb.toString()); // Output: Hello World

When to Use:

  • Best for performance in loops and large concatenations.
  • Mutable, meaning it does not create unnecessary objects.

4. Using StringBuffer (Thread-Safe Alternative to StringBuilder)

StringBuffer is similar to StringBuilder but is thread-safe.

StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
System.out.println(sb.toString()); // Output: Hello World

When to Use:

  • When multiple threads modify the same string.
  • Not needed for single-threaded applications (use StringBuilder instead).

5. Using String.join() (For Joining Multiple Strings)

If you need to join multiple strings with a delimiter, String.join() is a good choice.

String result = String.join(" ", "Hello", "World");
System.out.println(result); // Output: Hello World

When to Use:

  • Useful for joining lists of strings with separators.
  • Improves code readability.

6. Using String.format() (For Formatted Strings)

String.format() is useful when you need formatted output.

String first = "Hello";
String second = "World";
String result = String.format("%s %s", first, second);
System.out.println(result); // Output: Hello World

When to Use:

  • When formatting is required (e.g., numbers, dates, etc.).

7. Using Collectors.joining() (For Collections of Strings)

For concatenating strings in a collection, Java Streams offer Collectors.joining().

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

List<String> words = Arrays.asList("Hello", "World");
String result = words.stream().collect(Collectors.joining(" "));
System.out.println(result); // Output: Hello World

When to Use:

  • When working with lists or arrays of strings.
  • Ideal for stream-based processing.

Performance Comparison

Press enter or click to view image in full size

Key Takeaways:

  • Use + for simple cases.
  • Prefer StringBuilder for efficiency when concatenating multiple times.
  • Use String.join() for joining multiple strings with a delimiter.
  • Use StringBuffer only when thread safety is required.

Conclusion

Choosing the right string concatenation method in Java depends on the use case. While the + operator and concat() are suitable for small operations, StringBuilder is the most efficient for frequent concatenations. Understanding these differences helps write better-performing and cleaner Java code.

Let me know in the comments which method you prefer or if you have any other interesting use cases!

--

--

Vaishnavi Agrawal
Vaishnavi Agrawal

Written by Vaishnavi Agrawal

Java Backend Developer · Building in public