On Crunchify, we have published more than 500 Java Tutorials and in this tutorial we will go over steps on how to reverse a string in Java?
- There are 7 different ways you can reverse a string in Java.
package crunchify.com.tutorials;
import org.apache.commons.lang3.StringUtils;
import java.nio.charset.StandardCharsets;
/**
* @author Crunchify.com
* How to Reverse a string in Java?
* Version: 2.0
*/
public class CrunchifyReverseString {
public static void main(String[] args) {
String testString = "Crunchify.com Example";
System.out.println("String: " + testString);
System.out.println("\nSolution1: Reverse Using reverseStringBuffer: " + reverseStringBuffer(testString));
System.out.println("Solution2: Reverse Using reverseCharArray: " + reverseCharArray(testString));
System.out.println("Solution3: Reverse Using reverseStringVariable: " + reverseStringVariable(testString));
System.out.println("Solution4: Reverse Using reverseRecursion: " + reverseRecursion(testString));
System.out.println("Solution5: Reverse Using BuilderReverse: " + StringBuilderReverse(testString));
System.out.println("Solution6: Reverse Using reverseApacheCommonsLang3: " + reverseApacheCommonsLang3(testString));
System.out.println("Solution7: Reverse Using reverseApacheCommonsLang3Separator: " + reverseApacheCommonsLang3Separator(testString));
}
// Solution1: Reverse using StringBuffer Example
public static String reverseStringBuffer(String s) {
// Causes this character sequence to be replaced by the reverse of the sequence.
// If there are any surrogate pairs included in the sequence, these are treated as single characters for the reverse operation.
return new StringBuffer(s).reverse().toString();
}
// Solution2: Reverse using Char Array Example
public static String reverseCharArray(String s) {
char[] reverseStringArray = new char[s.length()];
for (int i = s.length() - 1, j = 0; i != -1; i--, j++) {
// Returns the char value at the specified index. An index ranges from 0 to length() - 1.
// The first char value of the sequence is at index 0, the next at index 1, and so on, as for array indexing.
reverseStringArray[j] = s.charAt(i);
}
return new String(reverseStringArray);
}
// Solution3: Reverse using String Variable Example
public static String reverseStringVariable(String s) {
String reverseStringVariable = "";
for (int i = s.length() - 1; i != -1; i--) {
reverseStringVariable += s.charAt(i);
}
return reverseStringVariable;
}
// Solution4: Reverse using Recursion Example
public static String reverseRecursion(String s) {
if (s.length() <= 1) {
return s;
}
// Returns a string that is a substring of this string.
// The substring begins at the specified beginIndex and extends to the character at index endIndex - 1.
return reverseRecursion(s.substring(1, s.length())) + s.charAt(0);
}
// Solution5: Reverse using StringBuilder(str).reverse()
public static String StringBuilderReverse(String crunchifyString) {
byte[] crunchifyValue = crunchifyString.getBytes(StandardCharsets.UTF_8);
int length = crunchifyValue.length - 1;
for (int crunchifyStart = (length - 1) >> 1; crunchifyStart >= 0; crunchifyStart--) {
int crunchifyEnd = length - crunchifyStart;
byte crunchifyTemp = crunchifyValue[crunchifyStart];
crunchifyValue[crunchifyStart] = crunchifyValue[crunchifyEnd];
crunchifyValue[crunchifyEnd] = crunchifyTemp;
}
return new String(crunchifyValue);
}
// Solution6: Reverse using Apache commons lang3
public static String reverseApacheCommonsLang3(String s) {
return (StringUtils.reverse("Crunchify.com Tutorial"));
}
// Solution7: Reverse using Apache commons lang3
public static String reverseApacheCommonsLang3Separator(String s) {
return (StringUtils.reverseDelimited("Crunchify.com Tutorial", ' '));
}
}
Output:
/Library/Java/JavaVirtualMachines/jdk-14.0.2.jdk/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=52056:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/appshah/crunchify/github/CrunchifyTutorials/target/classes String: Crunchify.com Example Solution1: Reverse Using reverseStringBuffer: elpmaxE moc.yfihcnurC Solution2: Reverse Using reverseCharArray: elpmaxE moc.yfihcnurC Solution3: Reverse Using reverseStringVariable: elpmaxE moc.yfihcnurC Solution4: Reverse Using reverseRecursion: elpmaxE moc.yfihcnurC Solution5: Reverse Using BuilderReverse: elpmaxE moc.yfihcnurC Solution6: Reverse Using reverseApacheCommonsLang3: lairotuT moc.yfihcnurC Solution7: Reverse Using reverseApacheCommonsLang3Separator: Tutorial Crunchify.com Process finished with exit code 0
I look forward to hear about any different approaches that you’ve taken for solving this task.

