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

使用字符串类方法反转字符串并将其存储在Java中的同一变量中,java,string,reverse,Java,String,Reverse,假设有一个字符串变量str=“人不是人!”,那么我需要将该字符串的反面存储在与“!eno on si nama”相同的str变量中,而不使用任何其他对象或变量。有人能提供最优化的方法来实现这一点吗 我已经使用了以下代码: public static String reverseRecursively(String str) { //base case to handle one char string and empty string if (str.length

假设有一个字符串变量
str=“人不是人!”
,那么我需要将该字符串的反面存储在与
“!eno on si nama”
相同的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);
    }
publicstaticstring反向递归(stringstr){
//处理一个字符字符串和空字符串的基本大小写
如果(str.length()<2){
返回str;
}
反向递归返回(str.substring(1))+str.charAt(0);
}
还有别的办法吗

请注意,我只希望使用
字符串类方法来实现它

试试这个

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);
char[]chars=新字符[str.length()];
对于(int i=0;i
能否提供未优化的方法?我不想使用StringBuilder。我只想使用字符串类方法进行反向操作。@ShashankShekher我已经更新了答案。还有其他解决方案吗?@ShashankShekher我刚才做的那个有什么问题吗?要求是什么?没问题。我只是想知道是否还有其他方法。