1. java Object类的hashCode()方法是一个本地方法, 会调用c++方法。
1.1. Object.java中的hashCode()方法: public native int hashCode();
1.2. Object对象的hashCode()方法在C语言文件Object.c中实现。下载openjdk.zip, 打开\openjdk\jdk\src\share\native\java\lang\目录, 查看Object.c文件, 可以看到hashCode()的方法被注册成有JVM_IHashCode方法指针来处理:
1.3. JVM_IHashCode方法指针在\openjdk\hotspot\src\share\vm\prims目录中的jvm.cpp中实现,可以看出JVM_IHashCode方法中调用了ObjectSynchronizer::FastHashCode方法:
1.4. ObjectSynchronizer::FastHashCode方法在\openjdk\hotspot\src\share\vm\runtime目录中的synchronizer.cpp中实现:
2. String类的hashCode()方法
3. hashCode()的返回值不能保证唯一性。