我编写了一个示例Java程序:
String str="JAVA is awesome";
char[] ch=str.toCharArray();
System.out.println("The value of ch is : " + ch);
它显示出一些意外的结果,带有一些随机的ascii值......问题是什么?
答案 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