当前位置: 首页 > 面试题库 >

如果char数组是Java中的Object,为什么打印它不会显示其哈希码?

刘和正
2023-03-14
问题内容

打印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数组?


问题答案:

首先,就像其他任何类型的数组一样,char数组是Java中的Object。只是以不同的方式打印。

PrintStream(这是System.out实例的类型)具有println用于字符数组的特殊版本public void println(char x[])--因此不必调用toString该数组。最终调用public void write(char cbuf[], int off, int len),将数组的字符写入输出流。

这就是为什么对a调用println与char[]对其他类型的数组调用它的行为有所不同的原因。对于其他数组类型,public void println(Object x)选择重载,调用String.valueOf(x),调用x.toString(),返回类似于[I@19e0bfdint数组的内容。



 类似资料: