Why printing Integer array Object gives hash code while char array object gives value in java? -


here snippet of code

public class test1 {      public static void main(string[] args) {         // todo auto-generated method stub         char[] a={'a','b','c',97,'a'};         system.out.println(a);         int[] a1={8,6,7};         system.out.println(a1);         integer[] b={10,20,30};         system.out.println(b);         } } 

here output

abcaa [i@239d5fe6 [ljava.lang.integer;@5527f4f9 

i know has deal tostring() method. has been overridden in char return value. hence getting first output expected here overridden tostring() method of java.lang.character ..

public string tostring() {       char buf[] = {value};//the value of character.       return string.valueof(buf);    } 

but looking @ integer there overridden tostring() method

public string tostring() {         return string.valueof(value); //the value of integer.      } 

then why printing a1 , b code calls default tostring() implementation of object class, is:

public string tostring() {     return getclass().getname() + "@" + integer.tohexstring(hashcode()); } 

also since valueof makes object it's common in both overridden methods.

because there dedicated method printing char arrays:

https://docs.oracle.com/javase/7/docs/api/java/io/printstream.html#println(char[])

public void println(char[] x)

prints array of characters , terminate line. method behaves though invokes print(char[]) , println().

parameters:
x - array of chars print.

implementation:

public void println(char x[]) {     synchronized (this) {       print(x);       newline();    } } 

it has nothing tostring implementation of char[] class.


Popular posts from this blog

c# - ODP.NET Oracle.ManagedDataAccess causes ORA-12537 network session end of file -

matlab - Compression and Decompression of ECG Signal using HUFFMAN ALGORITHM -

utf 8 - split utf-8 string into bytes in python -