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 の 16 進バージョン)

于 2012-12-05T21:58:12.287 に答える
0

このメソッドをオーバーライドしていない場合は、 toString() 実装を呼び出します。Object次のように実装されている のバージョンを呼び出します。

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

そのインスタンスのハッシュコードの 16 進バージョンです

于 2012-12-05T21:58:19.647 に答える
0

メソッドをオーバーライドしない場合はtoString()、によって提供されるものObjectが使用されます。次のことを行います。

classのtoStringメソッドは、オブジェクトがインスタンスであるクラスの名前、アットマーク文字、およびオブジェクトのハッシュ コードの符号なし 16 進数表現でObject構成される文字列を返します。@つまり、このメソッドは次の値に等しい文字列を返します。

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

「ランダム」文字は、オブジェクトのハッシュ コード (16 進数) です。

于 2012-12-05T21:58:42.847 に答える