黄舟2017-04-18 10:18:13
それは許可されていないと覚えています。メモリアドレスを出力する理由は何ですか?
ハッシュコードは必ずしもメモリアドレスが異なることを意味するわけではありません。 JVM が異なれば実装も異なります。
伊谢尔伦2017-04-18 10:18:13
オブジェクトの hashCode() はデフォルトでメモリアドレスを返しますが、hashCode() は書き換えられるため、hashCode() は異なるメモリアドレスを表すことはできません
System.identityHashCode(Object) メソッドは、オブジェクトのクラスが hashCode() メソッドをオーバーライドするかどうかに関係なく、オブジェクトのメモリ アドレスを返すことができます
天蓬老师2017-04-18 10:18:13
Java オブジェクト クラスの toString メソッドは、デフォルトで参照変数のアドレスを出力します。アドレスが出力されない場合は、toString を書き換えてみてください。
PHPz2017-04-18 10:18:13
JDK API をよく読んでください。
hashCode の一般的なプロトコルは次のとおりです。
実際、Object クラスによって定義された hashCode メソッドは、オブジェクトごとに異なる整数を返します。 (これは通常、オブジェクトの内部アドレスを整数に変換することによって実現されますが、JavaTM プログラミング言語ではこの実装手法は必要ありません。)