What is the easiest way to reverse a String in Java?

JavaObject Oriented ProgrammingProgramming

Built-in reverse() method

The StringBuffer class provides you a method named reverse(). It reverses the contents of the current StringBuffer object and returns the resultant StringBuffer object. It is the easiest way to reverse a Sting using Java. To do so −

  • Instantiate the StringBuffer class by passing the required String as a parameter.

  • Invoke the reverse() method od the created object.

  • Convert it into String again using the toString() method.


public class Sample {
   public static void main(String args[]) {
      String str = new String("Hello how are you");
      StringBuffer sb = new StringBuffer(str);
      String str2 = sb.reverse().toString();


uoy era woh olleH

Let us observe two more ways to reverse a String

Using recursion

Recursion is a process of calling a function within itself, following java program reverses a Sting using recursion −


public class StringReverse {
   public String reverseString(String str) {
      if(str.isEmpty()) {
         return str;
      }else {
         return reverseString(str.substring(1))+str.charAt(0);
   public static void main(String[] args) {
      StringReverse obj = new StringReverse();
      String result = obj.reverseString("Tutorialspoint");



Using toCharArray()

You can also convert the String to a character array and swap the characters of the array.

To reverse an array, swap the first element with the last element and the second element with second last element and so on, if the array is of odd length leave the middle element as it is.

If i is the first element of the array (length of the array –i-1) will be the last element therefore, swap array[i] with array[(length of the array –i-1)] from the start to the midpoint of the array −


import java.util.Arrays;
public class StringReverse {
   public static void main(String[] args) {
      String str = "Tutorialspoint";
      char[] myArray = str.toCharArray();
      int size = myArray.length;
      for (int i = 0; i < size / 2; i++) {
         char temp = myArray[i];
         myArray[i] = myArray[size - 1 - i];
         myArray[size - 1 - i] = temp;
      System.out.println("Array after reverse:: ");


Array after reverse::
[t, n, i, o, p, s, l, a, i, r, o, t, u, T]
Updated on 10-Oct-2019 10:38:21