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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…