オブジェクトを渡すときは、その参照を値として渡していることを知っています。しかし、あなたが得たこの値はhashcode()
正しい方法を使用しています(私のテストによれば同じです)? はメモリ アドレスではなく、常に一意の値を取得できる保証もないためhashcode()
、オブジェクトを渡すときに衝突などの奇妙なことが起こる可能性はありますか?
(オーバーライドされていないと仮定hashcode()
します。つまり、 と同じ値を返しますSystem.identityHashCode()
)
このような質問は 3 つありますが、渡される値とは何か、どのように取得するのかを説明している関連リソースが見つかりません。
編集:
これが私のテストです。デフォルトでtoSting()
は、hashCode()
内部を使用して 16 進値に変換します。では、オブジェクトを渡すとき、これは渡される値ですか? または、Java は (渡される) すべてのオブジェクトを追跡して、参照の衝突が発生しないようにするために何をしますか?
Object o = new Object();
System.out.println(o);
System.out.println(o.toString()); //both prints same thing - java.lang.Object@10385c1