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:
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.
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().
精彩评论