Why does the toString method in java not seem to work for an array
To get a human-readable toString()
, you must use Arrays.toString()
, like this:
System.out.println(Arrays.toString(Array));
Java's toString()
for an array is to print [
, followed by a character representing the type of the array's elements (in your case C
for char
), followed by @
then the "identity hash code" of the array (think of it like you would a "memory address").
This sad state of affairs is generally considered as a "mistake" with java.
See this answer for a list of other "mistakes".
I don't know where you get the idea that "in principle" it should print "abcdef". Where is that documented?
Something like [C@6e1408
is certainly not random gibberish - it's the same way of constructing a string from an object as any other type that doesn't override toString()
inherits - it's a representation of the type ([
indicating an array; C
indicating the char
primitive type) followed by the identity hash code in hex. See the documentation for Object.toString()
for details. As it happens, arrays don't override toString
.
If you want [a, b, c, d, e, f]
you can use Arrays.toString(char[])
. If you want abcdef
you can use new String(char[])
.
Arrays don't override toString
. There's a static method: java.util.Arrays.toString
that should solve your problem.
import java.util.Arrays;
class toString {
public static void main(String[] args){
char[] Array = {'a', 'b', 'c', 'd', 'e', 'f'};
System.out.println(Arrays.toString(Array));
}
}