sid*_*rma 33 java arrays tostring
我想使用java中的toString()方法将字符数组转换为字符串对象.这是我使用的测试代码的片段:
import java.util.Arrays;
class toString{
public static void main(String[] args){
char[] Array = {'a', 'b', 'c', 'd', 'e', 'f'};
System.out.println(Array.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
原则上,它应该打印abcdef,但是每次程序执行时都会打印[C @ 6e1408或[C @ e53108]等随机乱码.我不需要替代,但想知道为什么会发生这种情况.
Boh*_*ian 36
要获得人类可读的toString()
,您必须使用Arrays.toString()
,如下所示:
System.out.println(Arrays.toString(Array));
Run Code Online (Sandbox Code Playgroud)
toString()
数组的Java 用于打印[
,后跟一个表示数组元素类型的字符(在您的情况下C
为char
),然后@
是数组的"标识哈希码"(想想它就像"内存地址"一样) ).
这种悲惨的状态通常被认为是java的"错误".
请参阅此答案以获取其他"错误"的列表.
Jon*_*eet 32
我不知道你在哪里得到"原则上"它应该打印"abcdef"的想法.记录在哪里?
类似的东西[C@6e1408
肯定不是随机的乱码 - 它与从一个对象构造一个字符串的方式相同,就像任何其他不覆盖toString()
继承的类型一样- 它是一个表示类型([
表示一个数组; C
表示char
基本类型)后跟身份十六进制的哈希码.有关详细信息,请参阅文档Object.toString()
.碰巧,数组不会覆盖toString
.
如果你想要[a, b, c, d, e, f]
你可以使用Arrays.toString(char[])
.如果你想要abcdef
你可以使用new String(char[])
.