f21.Person1@373ee92
好的 f21 代表包。Person 类类型。
谁能用简单的术语解释为什么有一个“@”后跟随机字符。以及随机字符代表什么(在内存中的位置?)。
当我执行以下操作并且尚未声明 toString() 方法时,我会收到此消息:
System.out.println(myObject);
如果你没有在你的类中重写 toString() 方法,Object 类的 toString() 将被调用。
System.out.println(myObject);// this will call toString() by default.
下面是java.Lang.Object类中 toString的实现。
The {@code toString} method for class {@code Object} returns a string consisting of the name of the class of which the object is an instance, the at-sign character `{@code @}', and the unsigned hexadecimal representation of the hash code of the object
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
所以,同样适用于21.Person@373ee92
:
21.Person(完全限定的类名) + @ + 37ee92(hasgcode 的十六进制版本)
它调用 toString() 实现,如果您没有覆盖此方法,那么它将调用Object
的版本,实现如下
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
它是该实例的哈希码的十六进制版本
如果您不覆盖该toString()
方法,则使用 by 提供的Object
方法。它执行以下操作:
class的
toString
方法Object
返回一个字符串,该字符串由对象作为实例的类的名称、at 符号字符@
和对象哈希码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:getClass().getName() + '@' + Integer.toHexString(hashCode())
“随机”字符是对象的哈希码,以十六进制表示。