Why does the toString method in java not seem to work for an array

后端 未结 9 1412
灰色年华
灰色年华 2020-11-22 12:25

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         


        
相关标签:
9条回答
  • 2020-11-22 13:01

    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[]).

    0 讨论(0)
  • 2020-11-22 13:04

    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".

    0 讨论(0)
  • 2020-11-22 13:11

    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;
    }
    
    0 讨论(0)
提交回复
热议问题