这就是问题所在。这段代码:
String a = "0000";
System.out.println(a);
char[] b = a.toCharArray();
System.out.println(b);
回报
0000
0000
但是这段代码:
String a = "0000";
System.out.println("String a: " + a);
char[] b = a.toCharArray();
System.out.println("char[] b: " + b);
回报
字符串a:0000
字符 [] b: [C@56e5b723
这到底是怎么回事?似乎应该有一个足够简单的解决方案,但我似乎无法弄清楚。
原文由 stephenwade 发布,翻译遵循 CC BY-SA 4.0 许可协议
当你说
它导致调用
print(char[] s)
然后println()
print(char[] s)
的 JavaDoc 说:所以它执行逐字节打印。
当你说
It results in a call to
print(String)
, and so what you’re actually doing is appending to aString
anObject
whichtoString()
在Object
这个,与所有Object
默认情况下,在Array
的情况下,打印引用的内存地址(打印内存地址) ).你可以这样做:
请注意,从您不注意编码并使用系统默认值的意义上说,这是“错误的”。尽早了解编码。