您好我正在编写一个测试程序来反转一个字符串。当我使用toString()方法将字符数组转换为字符串时,我得到错误的输出。当我尝试使用for循环手动打印数组而不将其转换为字符串时,答案是正确的。我写的代码如下所示:
import java.util.*;
public class stringManip {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "This is a string";
System.out.println("String=" +str);
//reverse(s);
char[] c = str.toCharArray();
int left = 0;
int right = str.length() - 1;
for (int i = 0; i < (str.length())/2; i++)
{
char temp = c[left];
c[left++] = c[right];
c[right--] = temp;
}
System.out.print("Reverse="+c.toString());
}
}
我应该得到我输入的字符串的反向,而输出的结果是:
String=This is a string
Reverse=[C@45a1472d
使用toString()方法时有什么问题吗?任何帮助表示赞赏。谢谢。
答案 0 :(得分:2)
数组不会覆盖toString()
方法。因此,您所看到的是默认Object.toString()
实现的输出,其中包含对象的类型([C
表示字符数组),后跟其hashCode。
要从char数组构造String,请使用
new String(c)