通过在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 =整数
我认为虽然技术上所有答案都是正确的,但真正的答案是“不”。 这个数字没有任何意义,你可以完全不做任何假设。