This question already has an answer here:
-
How do I print my Java object without getting “SomeType@2f92e0f4”?
10 answers
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 memory address of the object which is what the default toString() implemented in the Object class does. It is also the default hashCode().
It's the result of System.identityHashCode(Object x);
which is the default implementation of every object's hashCode()...
from the Object javadoc:
getClass().getName() + '@' + Integer.toHexString(hashCode())
The 89fbe3 is a hex version of the hash code. The [I
means an array of ints (I'm surprised you get that with an Integer[]
, are you sure it wasn't an int[]
?)
Some others:
[L<typename>;
: an array of reference type "typename" (e.g. [Ljava.lang.Integer
)
[J
: an array of longs
[B
: an array of bytes
etc.
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
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.