通常、 のデフォルトの実装はObject.hashCode()
、メモリ内のオブジェクトの割り当てられたアドレスの関数です (ただし、これはJLSによって義務付けられていません)。VM がメモリ内でオブジェクトをシャントすることを考えると、System.identityHashCode()
オブジェクトの有効期間中に返される値が決して変わらないのはなぜですか?
それが「ワンショット」計算である場合 (オブジェクトhashCode
は 1 回計算され、オブジェクト ヘッダーなどに格納されます)、2 つのオブジェクトが同じものを持つ可能性があることを意味しますidentityHashCode
か?メモリ内の同じアドレス)?