Strange toCharArray() behavior
I was experimenting with toCharArray() and found some strange behavior.
Suppose private static final char HEX_CHARS = "0123456789abcdef".toCharArray();
System.out.println(HEX_CHARS); /* prints 0123456789abcdef */ System.out.println("this is HEX_CHARS "+HEX_CHARS); /* prints [C@19821f */
Any theoretical reason behind this?
It is because the parameter to println is different in the two calls.
The first parameter is called with char and the second is called with a string, where HEX_CHARS is converted with a call to .toString().
The println() have an overriden method that accepts a charArray.
The first line calls the method
on the PrintStream which prints what you expect. The second one calls the method
Where is concatenating the string with the toString implementation of the array which is that ugly thing you get ([C@19821f).
Arrays are objects, and its toString methods returns
getClass().getName() + "@" + Integer.toHexString(hashCode())
In your case [C@19821f means char and @19821f is its hashcode in hex notation.
If you want to print values from that array use iteration or Arrays.toString method.
The strange output is the toString() of the char type. for some odd reason, java decided to have a useless default implementation of toString() on array types. try Arrays.toString(HEX_STRING) instead.