I want to convert a character array to a string object using the toString() method in java. Here is a snippet of the test code I used:
import java.util.Array
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[])
.
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".
this way I found worked:
public String convertToString(char[] array, int length)
{
String char_string;
String return_string="";
int i;
for(i=0;i<length;i++)
{
char_string=Character.toString(array[i]);
return_string=return_string.concat(char_string);
}
return return_string;
}