打印 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);
}
}
输出:
[I@19e0bfd
abc
为什么整数数组打印为哈希码而不是字符数组?
最佳答案
首先,char 数组是 Java 中的 Object,就像任何其他类型的数组一样。只是打印方式不同。
PrintStream
(它是 System.out
实例的类型)有一个特殊版本的 println
用于字符数组 - public void println(char x[])
- 所以它不必为该数组调用 toString
。最终调用public void write(char cbuf[], int off, int len)
,将数组的字符写入输出流。
这就是为什么为 char[]
调用 println 的行为不同于为其他类型的数组调用它的原因。对于其他数组类型,选择 public void println(Object x)
重载,它调用 String.valueOf(x)
,它调用 x.toString()
,它为 int 数组返回类似 [I@19e0bfd
的内容。
关于java - 如果 char 数组是 Java 中的 Object,为什么打印它不显示其哈希码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31218498/