This question already has an answer here:
Lets say i have this code :
Integer[] a= new Integer[5];
System.Out.println(((Object)a).toString());
the output is get is
[Integer@89fbe3
what is the meaning of 89fbe3 ? is this some kind of address ? hash code? is it unique for each object? , and if so- if its a multi-threaded program , is it still unique ?
thanks !
It's the result of
System.identityHashCode(Object x);
which is the default implementation of every object's hashCode()...
from the Object javadoc:
I think that while technically all the answers are correct, the real answer is "NO". This number has no meaning and you can make absolutely no assumptions about it.
It is the identity hash code of the object (you can think of it as the address of the object), along with some type information.
[ = array I = Integer
The 89fbe3 is a hex version of the hash code. The
[I
means an array of ints (I'm surprised you get that with anInteger[]
, are you sure it wasn't anint[]
?)Some others:
[L<typename>;
: an array of reference type "typename" (e.g.[Ljava.lang.Integer
)[J
: an array of longs[B
: an array of bytesetc.
It's the memory address of the object which is what the default toString() implemented in the Object class does. It is also the default hashCode().