开发者

What is the meaning of the information that I get by printing an Object in Java? [duplicate]

This question already has answers here: 开发者_运维技巧 How do I print my Java object without getting "SomeType@2f92e0f4"? (13 answers) Closed 5 years ago.

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().

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜