84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
java怎么打印每个对象的内存地址呢?hashcode能代表内存地址的不同吗?
人生最曼妙的风景,竟是内心的淡定与从容!
それは許可されていないと覚えています。メモリアドレスを出力する理由は何ですか?
ハッシュコードは必ずしもメモリアドレスが異なることを意味するわけではありません。 JVM が異なれば実装も異なります。
オブジェクトの hashCode() はデフォルトでメモリアドレスを返しますが、hashCode() は書き換えられるため、hashCode() は異なるメモリアドレスを表すことはできません
System.identityHashCode(Object) メソッドは、オブジェクトのクラスが hashCode() メソッドをオーバーライドするかどうかに関係なく、オブジェクトのメモリ アドレスを返すことができます
Java オブジェクト クラスの toString メソッドは、デフォルトで参照変数のアドレスを出力します。アドレスが出力されない場合は、toString を書き換えてみてください。
JDK API をよく読んでください。 hashCode の一般的なプロトコルは次のとおりです。
実際、Object クラスによって定義された hashCode メソッドは、オブジェクトごとに異なる整数を返します。 (これは通常、オブジェクトの内部アドレスを整数に変換することによって実現されますが、JavaTM プログラミング言語ではこの実装手法は必要ありません。)
それは許可されていないと覚えています。メモリアドレスを出力する理由は何ですか?
ハッシュコードは必ずしもメモリアドレスが異なることを意味するわけではありません。 JVM が異なれば実装も異なります。
オブジェクトの hashCode() はデフォルトでメモリアドレスを返しますが、hashCode() は書き換えられるため、hashCode() は異なるメモリアドレスを表すことはできません
System.identityHashCode(Object) メソッドは、オブジェクトのクラスが hashCode() メソッドをオーバーライドするかどうかに関係なく、オブジェクトのメモリ アドレスを返すことができます
Java オブジェクト クラスの toString メソッドは、デフォルトで参照変数のアドレスを出力します。アドレスが出力されない場合は、toString を書き換えてみてください。
JDK API をよく読んでください。
hashCode の一般的なプロトコルは次のとおりです。
実際、Object クラスによって定義された hashCode メソッドは、オブジェクトごとに異なる整数を返します。 (これは通常、オブジェクトの内部アドレスを整数に変換することによって実現されますが、JavaTM プログラミング言語ではこの実装手法は必要ありません。)