Solution is to use
System.out.println("" + new String(c));
"" + is really bogus and should be removed.
Below is why you get what you get.
System.out is a
println() has an overload for
Prints an array of characters and then terminate the line. This method behaves as though it invokes
"" + c is string concatenation, which is defined in JLS 15.18.1 String Concatenation Operator
If only one operand expression is of type
String, then string conversion (§5.1.11) is performed on the other operand to produce a string at run time.
And JLS 5.1.11 String Conversion says:
[…] the conversion is performed as if by an invocation of the toString method of the referenced object with no arguments […]
toString() is not defined for arrays, so the
Object.toString() method is invoked:
toString method for class
Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character ‘
@‘, and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Which is why you get something like
[[email protected] when you do string concatenation.