通过在Java中打印Object获得的信息是什么意思?

让我说我有这个代码:

Integer[] a= new Integer[5]; System.Out.println(((Object)a).toString()); 

输出是得到的

 [Integer@89fbe3 

89fbe3是什么意思? 这是某种地址吗? 哈希码? 它对每个物体都是独特的吗? ,如果是这样 – 如果它是一个multithreading程序,它仍然是唯一的吗?

谢谢 !

它是对象的内存地址,它是Object类中实现的默认toString()。 它也是默认的hashCode()。

它是System.identityHashCode(Object x);的结果System.identityHashCode(Object x);

这是每个对象的hashCode()的默认实现…

来自Object javadoc:

 getClass().getName() + '@' + Integer.toHexString(hashCode()) 

89fbe3是哈希码的hex版本。 [I意思是一个int的数组(我很惊讶你用Integer[]得到它,你确定它不是int[]吗?)

其他一些:

  • [L; :引用类型“typename”的数组(例如[Ljava.lang.Integer ]
  • [J :一长串
  • [B :一个字节数组

等等

它是对象的标识哈希码(您可以将其视为对象的地址),以及一些类型信息。

[=数组I =整数

我认为虽然技术上所有答案都是正确的,但真正的答案是“不”。 这个数字没有任何意义,你可以完全不做任何假设。