hashcode()方法的底层



学Java目前为止已近有1年有余。。。 
今天在研究代码的时候发现平时常用的Object类中 的 HashCode()方法,竟然没有实现。。。 (不是没有实现,是用的其他方式实现的,只不过Javaer看不到)
莫名开始好奇,光记得写类的时候不重写toString()方法 ,打印的时候会自动调用Object的toString()方法,而Object类中的toStirng ()是打印 类名@hashcode,toString()中也是调用的HashCode()方法。。。想到这就开始茫然了,HashCode()不是没有实现么,怎么打印出内容。 
不思不得其解,不停的做实验结果都是打印出了HashCode,偶然间突然发现Object中的HashCode()是这样写的: 
 
Java代码  

收藏代码

  1. //关键点 Native  
  2.  public native int hashCode();  


---------------------------------------------------------------------------------- 

查找了点关于Native的说明(PS:惭愧这么久了才注意到Native这个关键字) 

native是与C++联合开发的时候用的!java自己开发不用的! 

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

1。native 是用做java 和其他语言(如c++)进行协作时用的也就是native 后的函数的实现不是用java写的 2。既然都不是java,那就别管它的源代码了,呵呵 

native的意思就是通知操作系统,这个函数你必须给我实现,因为我要使用。所以native关键字的函数都是操作系统实现的, java只能调用。 

java是跨平台的语言,既然是跨了平台,所付出的代价就是牺牲一些对底层的控制,而java要实现对底层的控制,就需要一些其他语言的帮助,这个就是native的作用了 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值