使用 String class 方法反转字符串并将其存储在 Java 中的同一变量中

Reverse a String and store it in the same variable in Java using String class methods

假设有一个字符串变量 str = "A man is no one!",那么我需要将这个字符串的反转存储在与 "!eno on si nam A" 相同的 str 变量中,而不使用任何其他对象或变量。有人可以提供最优化的方法吗?

我已经使用了下面的代码:

public static String reverseRecursively(String str) {
        //base case to handle one char string and empty string
        if (str.length() < 2) {
            return str;
        }
        return reverseRecursively(str.substring(1)) + str.charAt(0);
    }

还有其他方法吗?

请注意,我只想使用 String class methods

试试这个。

new StringBuilder(str).reverse().toString()

虽然这确实会创建一个新的 StringBuilder 实例,但它不会将其存储在变量中,并且在没有任何新对象的情况下反转字符串将非常棘手(如果可能的话)。

编辑

因为除了 String 方法你不想使用任何东西,这里有一个简单的方法来代替循环,但它仍然会创建新对象。

char[] chars = new char[str.length()];
for (int i = 0; i < str.length(); i++) {
    chars[str.length() - i - 1] = str.charAt(i);
}
String newStr = new String(chars);