How to Concatenate Strings in Java

In Java, string concatenation is a common operation where two or more strings are combined to form a new string. In this article, we will discuss several ways of concatenating Strings in Java and also outline some common pitfalls and bad practices.

Different Ways to Concatenating Strings In Java

  1. Using StringBuilder
  2. Addition(+) Operator
  3. Using String.concat() Method
  4. Using String.join() Method (Java 8+)
  5. Using StringJoiner Class (Java 8+)
  6. Using Arrays.toString() Method
Let's discuss the above different ways to concatenate Strings in Java.

1. Using StringBuilder

StringBuilder class provides the append() method which is used to append the specified string to this character sequence. Let’s build a quick example of String concatenation using the StringBuilder class:
package com.javaguides.corejava.string;

public class ConcatStringExample {
    public static void main(String[] args) {
        ConcatStringExample example = new ConcatStringExample();
        example.usingStringBuilder();
    }
    public void usingStringBuilder() {
        StringBuilder stringBuilder = new StringBuilder(150);
        stringBuilder.append("Java");
        stringBuilder.append(" is");
        stringBuilder.append(" top");
        stringBuilder.append(" programming");
        stringBuilder.append(" laguange");
        System.out.println(stringBuilder.toString());
    }
}
Output:
Java is top programming laguange

2. Addition(+) Operator

This is the same operator that results in the addition of numbers and is overloaded to concatenate when applied to Strings.
If you have more string concatenation operations, then prefer using the StringBuilder object over the + operator.
Let’s take a quick look at how this works:
package com.javaguides.corejava.string;

public class ConcatStringExample {

    public static void main(String[] args) {
        ConcatStringExample example = new ConcatStringExample();
        example.usingPlusOperator();
    }

    public void usingPlusOperator() {
        String concatStr = "Java" + " is" + " top" + " programming" + " language";
        System.out.println(concatStr);
    }
}
Output:
Java is top programming language
Notice that String concatenation using the + operator within a loop should be avoided. Since the String object is immutable, each call for concatenation will result in a new String object being created.

3. Using String.concat() Method

The concat() method is available in the String class and allows you to concatenate two strings. It returns a new string that represents the concatenation of the original string with the specified string. 
Here's an example:
package com.javaguides.corejava.string;

public class ConcatStringExample {

    public static void main(String[] args) {
        ConcatStringExample example = new ConcatStringExample();
        example.usingStringConcatMethod();
    }

    public void usingStringConcatMethod() {
        String concatStr = "Java".concat(" is").concat(" top").concat(" programming").concat(" language");
        System.out.println(concatStr);
    }
}
Output:
Java is top programming language

4. Using String.join() Method (Java 8+)

If our application is running on Java 8 or above, we can take advantage of the String.join method. With this, we can join an array of Strings with a common delimiter, ensuring no spaces are missed.
package com.javaguides.corejava.string;

public class ConcatStringExample {

    public static void main(String[] args) {
        ConcatStringExample example = new ConcatStringExample();
        example.usingStringJoinMethod();
    }

    public void usingStringJoinMethod() {
        String[] strArray = {
            "Java",
            " is",
            " top",
            " programming",
            " language"
        };
        String concatStr = String.join("", strArray);
        System.out.println(concatStr);
    }
}
Output:
Java is top programming language
A huge advantage of this method is not having to worry about the delimiter between our strings.

5. Using StringJoiner Class (Java 8+)

Java 8 added a new final class StringJoiner in java.util package. It is used to construct a sequence of characters separated by a delimiter. Now, you can create a string by passing delimiters like a comma(,), hyphen(-), etc.
package com.javaguides.corejava.string;

import java.util.StringJoiner;

public class ConcatStringExample {

    public static void main(String[] args) {
        ConcatStringExample example = new ConcatStringExample();
        example.usingStringJoinerClass();
    }

    public void usingStringJoinerClass() {
        StringJoiner joiner = new StringJoiner(" ");
        joiner.add("Java");
        joiner.add("is");
        joiner.add("top");
        joiner.add("programming");
        joiner.add("language");
        System.out.println(joiner.toString());
    }
}
Output:
Java is top programming language

6. Using Arrays.toString() Method

The Arrays class contains a handy toString method which nicely formats an array of objects. The Arrays.toString method also calls the toString method of any enclosed object – so we need to ensure we have one defined.
package com.javaguides.corejava.string;

import java.util.Arrays;

public class ConcatStringExample {

    public static void main(String[] args) {
        ConcatStringExample example = new ConcatStringExample();
        example.usingArrayToString();
    }

    public void usingArrayToString() {
        String[] myFavouriteLanguages = {
            "Java",
            "C",
            "Java EE"
        };

        String str = Arrays.toString(myFavouriteLanguages);

        System.out.println(str);
    }
}
Output:
[Java, C, Java EE]
Read more about the Arrays class at Java Arrays

Complete Example

package com.javaguides.corejava.string;

import java.util.Arrays;
import java.util.StringJoiner;

public class ConcatStringExample {

    public static void main(String[] args) {
        ConcatStringExample example = new ConcatStringExample();
        example.usingArrayToString();
        example.usingStringBuilder();
        example.usingPlusOperator();
        example.usingStringConcatMethod();
        example.usingStringJoinerClass();
        example.usingStringJoinMethod();
    }

    public void usingStringBuilder() {
        StringBuilder stringBuilder = new StringBuilder(150);
        stringBuilder.append("Java");
        stringBuilder.append(" is");
        stringBuilder.append(" top");
        stringBuilder.append(" programming");
        stringBuilder.append(" laguange");
        System.out.println(stringBuilder.toString());
    }

    public void usingPlusOperator() {
        String concatStr = "Java" + " is" + " top" + " programming" + " language";
        System.out.println(concatStr);
    }

    public void usingStringConcatMethod() {
        String concatStr = "Java".concat(" is").concat(" top").concat(" programming").concat(" language");
        System.out.println(concatStr);
    }

    public void usingStringJoinMethod() {
        String[] strArray = {
            "Java",
            " is",
            " top",
            " programming",
            " language"
        };
        String concatStr = String.join(" ", strArray);
        System.out.println(concatStr);
    }

    public void usingStringJoinerClass() {
        StringJoiner joiner = new StringJoiner("");
        joiner.add("Java");
        joiner.add("is");
        joiner.add("top");
        joiner.add("programming");
        joiner.add("language");
        System.out.println(joiner.toString());
    }

    public void usingArrayToString() {
        String[] myFavouriteLanguages = {
            "Java",
            "C",
            "Java EE"
        };

        String str = Arrays.toString(myFavouriteLanguages);

        System.out.println(str);
    }
}
Output:
[Java, C, Java EE]
Java is top programming laguange
Java is top programming language
Java is top programming language
Javaistopprogramminglanguage
Java  is  top  programming  language

Related Java String Programs and Examples 

Comments