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.
Example
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(); System.out.println(str2); } }
Output
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 −
Example
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"); System.out.println(result); } }
Output
tniopslairotuT
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 −
Example
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:: "); System.out.println(Arrays.toString(myArray)); } }
Output
Array after reverse:: [t, n, i, o, p, s, l, a, i, r, o, t, u, T]