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 の 16 進バージョン)
このメソッドをオーバーライドしていない場合は、 toString() 実装を呼び出します。Object
次のように実装されている のバージョンを呼び出します。
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
そのインスタンスのハッシュコードの 16 進バージョンです
メソッドをオーバーライドしない場合はtoString()
、によって提供されるものObject
が使用されます。次のことを行います。
classの
toString
メソッドは、オブジェクトがインスタンスであるクラスの名前、アットマーク文字、およびオブジェクトのハッシュ コードの符号なし 16 進数表現でObject
構成される文字列を返します。@
つまり、このメソッドは次の値に等しい文字列を返します。getClass().getName() + '@' + Integer.toHexString(hashCode())
「ランダム」文字は、オブジェクトのハッシュ コード (16 進数) です。