System#identityHashCode(Object)
System#identityHashCode(Object)で、オブジェクトの「デフォルトのハッシュコード(Object#hashCode()と同じ値)」を返します。
- クラスがhashCode()をオーバーライドしていてもオーバーライド前のハッシュコードを取得できます。
- 返される値は、通常、オブジェクトの内部アドレス値を整数に変換した値になります。
- 注意:一意とは限りません。オブジェクトのアドレス空間がintより多いVMの場合、同じ値を返すオブジェクトが存在する可能性があります。
String a = new String("a"); String b = new String("a"); System.out.println( "equals :" + a.equals(b) ); // -> true // StringではhashCode()はオーバーライドされているため同じ値を返す。 System.out.println( "hashCode a :" + a.hashCode() ); System.out.println( "hashCode b :" + b.hashCode() ); // a,bはそれぞれ別のオブジェクトなので、別の値を返す。 System.out.println( "id a :" + System.identityHashCode(a) ); System.out.println( "id b :" + System.identityHashCode(b) );
実行結果です。
equals :true hashCode a :97 hashCode b :97 id a :827574 id b :17510567