A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡帅冰 中级黑马   /  2013-4-22 11:31  /  1357 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 胡帅冰 于 2013-4-22 12:28 编辑

查看了java的源代码,看到Object超类中的hashCode()方法,任何的对象都可以调用这个方法得到对象的哈希值,但是源代码中这个方法的写法是:public native int hashCode();  请问,为什么这个方法没有方法体,为什么在调用这个方法的时候还能得到哈希值???还有native 这个是什么意思?是一种修饰符么?最好能具体说一下,谢谢了。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

2 个回复

倒序浏览
使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。这些函数的实现体在DLL中,JDK的源代码中并不包含,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。

这个hashCode方法是系统底层的方法。所以没有方法体。只是调用了

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
杨玄文 发表于 2013-4-22 11:56
使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java ...

嗯。好的……明白了,谢谢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马