打印char数组不显示哈希码:
class IntChararrayTest{
public static void main(String[] args){
int intArray[] = {0,1,2};
char charArray[] = {'a','b','c'};
System.out.println(intArray);
System.out.println(charArray);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
[I@19e0bfd
abc
Run Code Online (Sandbox Code Playgroud)
为什么整数数组打印为哈希码而不是char数组?
Era*_*ran 23
首先,char数组是Java中的Object,就像任何其他类型的数组一样.它的印刷方式不同.
PrintStream(这是System.out实例的类型)具有特殊版本的println字符数组public void println(char x[])- 因此它不必调用toString该数组.它最终调用public void write(char cbuf[], int off, int len),它将数组的字符写入输出流.
这就是为什么调用println的char[]行为不同于为其他类型的数组调用println的原因.对于其他数组类型,public void println(Object x)选择重载,调用String.valueOf(x)哪些调用x.toString()返回类似于[I@19e0bfdint数组的内容.