If a char array is an Object in Java, why does printing it not display its hash code?

后端 未结 6 1784
鱼传尺愫
鱼传尺愫 2020-12-02 01:38

Printing a char array does not display a hash code:

class IntChararrayTest{
    public static void main(String[] args){
        int intArray[] = {0,1,2};
            


        
6条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-02 02:09

    First of all, a char array is an Object in Java just like any other type of array. It is just printed differently.

    PrintStream (which is the type of the System.out instance) has a special version of println for character arrays - public void println(char x[]) - so it doesn't have to call toString for that array. It eventually calls public void write(char cbuf[], int off, int len), which writes the characters of the array to the output stream.

    That's why calling println for a char[] behaves differently than calling it for other types of arrays. For other array types, the public void println(Object x) overload is chosen, which calls String.valueOf(x), which calls x.toString(), which returns something like [I@19e0bfd for int arrays.

提交回复
热议问题