0

f21.Person1@373ee92

好的 f21 代表包。Person 类类型。

谁能用简单的术语解释为什么有一个“@”后跟随机字符。以及随机字符代表什么(在内存中的位置?)。

当我执行以下操作并且尚未声明 toString() 方法时,我会收到此消息:

System.out.println(myObject);
4

3 回答 3

3

如果你没有在你的类中重写 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 的十六进制版本)

于 2012-12-05T21:58:12.287 回答
0

它调用 toString() 实现,如果您没有覆盖此方法,那么它将调用Object的版本,实现如下

  public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
  }

它是该实例的哈希码的十六进制版本

于 2012-12-05T21:58:19.647 回答
0

如果您不覆盖该toString()方法,则使用 by 提供的Object方法。它执行以下操作:

class的toString方法Object返回一个字符串,该字符串由对象作为实例的类的名称、at 符号字符@和对象哈希码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:

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

“随机”字符是对象的哈希码,以十六进制表示。

于 2012-12-05T21:58:42.847 回答