Ricky的面试比惨俱乐部 EP2 hashCode()

Object若不重写hashCode()的话,hashCode()如何计算出来的?

图片说明
好的回答结束。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
咳咳,我们来深究一下~
话不多说,先上源码——

     * @return  a hash code value for this object.
    public native int hashCode();

额,emmmm就没了,咋就返回了个内存地址呢,咋就调用了C或C++实现的呢?
关键在于这个native关键字:
当出现这个关键字的时候,意味着这个方法是在外部定义的,native意味着本地,即调用了本地的C或C++库,譬如hashCode()就是找到本地库中C实现的hashCode方法,去返回这个object的内存地址,而这个过程是的桥梁是JNI(Java Native Interface),他提供了互操作的API。
JNI调用C的流程图 https://www.cnblogs.com/KingIceMou/p/7239668.html
这就是为了跨平台,而对底层控制做出的牺牲。

全部评论

相关推荐

bLanK的小号:建议自己写一个比较新颖的项目,比如思维导图,在线文档,仿造postman,仿造一个组件库
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务