17
4

3 に答える 3

18

hashCodenativeシステムライブラリが内部的に呼び出されることを意味するメソッドです。詳細については、JavaNativeInterfaceを参照してください。

SOに質問がありますなぜhashCode()とgetClass()がネイティブメソッドなのですか?あなたにとって面白いかもしれません。

于 2012-11-28T10:09:28.773 に答える
5

デフォルトのhashCodeは実装固有になります。これはメモリアドレスに関連していると思われますが、VMがオブジェクトをメモリ内で移動することに注意してください(もちろん、hashCodeは同じままである必要があります)。したがって、実際のメモリアドレスにはなりません。

于 2012-11-28T10:10:43.343 に答える
3

デフォルトのhashcode()実装では、常にではありませんが、オブジェクトのメモリ アドレスに大まかに基づいた整数が頻繁に提供されますが、メモリ アドレスは変更される可能性があります。これは、JVM の実装によって大まかに異なる場合があります。

ハッシュコード()

ご存じのとおり、このメソッドはオブジェクトの has コードを提供します。基本的に、Object によって提供される hashCode() のデフォルトの実装は、メモリ アドレスを整数値にマッピングすることによって導出されます。Object クラスのソースを調べると、次の hashCode のコードが見つかります。

public native int hashCode();

これは、hashCode がメモリ アドレスをある程度提供するネイティブ実装であることを示しています。ただし、実装クラスで hashCode メソッドをオーバーライドすることは可能です。

http://www.javaworld.com/community/node/1006

于 2012-11-28T10:08:03.637 に答える