Strange toCharArray() behavior

前端 未结 4 1066
长情又很酷
长情又很酷 2021-01-20 03:29

I was experimenting with toCharArray() and found some strange behavior.

Suppose private static final char[] HEX_CHARS = \"0123456789abcdef\".toCha

相关标签:
4条回答
  • 2021-01-20 04:09

    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.

    0 讨论(0)
  • 2021-01-20 04:14

    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.

    `System.out.println(Arrays.toString(HEX_CHARS));`
    
    0 讨论(0)
  • 2021-01-20 04:23

    The first line calls the method

    print(char[] s) 
    

    on the PrintStream which prints what you expect. The second one calls the method

    print(String s)
    

    Where is concatenating the string with the toString implementation of the array which is that ugly thing you get ([C@19821f).

    0 讨论(0)
  • 2021-01-20 04:31

    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.

    0 讨论(0)
提交回复
热议问题