toCharArray()方法显示错误

时间:2014-09-04 15:05:21

标签: java error-handling syntax-error

我编写了一个示例Java程序:

String str="JAVA is awesome";
char[] ch=str.toCharArray();
System.out.println("The value of ch is : " + ch);

它显示出一些意外的结果,带有一些随机的ascii值......问题是什么?

3 个答案:

答案 0 :(得分:1)

您真的不需要这一步char ch[]=new char[n];

正如javadoc所说String#toCharArray() - 返回一个新分配的字符数组,其长度为该字符串的长度,其内容初始化为包含该字符串表示的字符序列。

在这一行System.out.println("The value of ch is : " + ch);

只返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@'”和对象的哈希码的无符号十六进制表示形式组成。

所以下面这几行应该做你想要实现的目标

String str="JAVA is awesome";
char[] ch = str.toCharArray();
System.out.println(java.util.Arrays.toString(ch));

Where Arrays.toString(char[] ch) - 返回指定数组内容的字符串表示形式。字符串表示由数组元素的列表组成,用方括号括起来(" []")。相邻元素由字符","分隔。 (逗号后跟空格)。

答案 1 :(得分:0)

这一行

System.out.println("The value of ch is : " + ch);

将打印出来

The value of ch is : //And the hash code of your array, which is just an object in Java

如果您需要有意义的数据,请使用Arrays.toString()重载方法...

System.out.println("The value of ch is : " + Arrays.toString(ch));

查看Array.toString()方法的Javadoc,看看它在您的情况下何时有用。

答案 2 :(得分:0)

此代码:

System.out.println("The value of ch is : " + ch);

等同于此

System.out.println("The value of ch is : " + ch.toString());

由于ch是一个数组对象,它从Object.toString()继承了toString()方法。这将返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@”以及对象的哈希代码的无符号十六进制表示形式组成。

尝试将其中一个用于您需要的输出:

System.out.println("The value of ch is : " + new String(ch)); //prints ch array as String
System.out.println("The value of ch is : " + String.valueOf(ch)); //prints ch array as String
System.out.println("The value of ch is : " + Arrays.toString(ch)); //prints every letter separately