源码:public native int hashCode();属于一个本地方法,没有方法体。
native关键字是“本地”的意思,这个方法它只要一被调用运行,虚拟机就会去找windows系统,windows就会根据windows内部的hash算法给所需的对象进行hash值得算出,大家还记得么,五片内存是不是有一个本地方法区,记得吧!它(本地方法里)存的就是这个。因为这个方法最终调用的全是系统的内容,也就是说系统是C做的,它调用的全是C的内容。
那么这个方法的代码你知道么,你肯定不知道,为什么?因为走了系统了嘛,你认为windows会把C或C++的源代码给你看么?肯定不会,所以该方法没有方法体。
所以我们也不用恼火这个事了,只要知道hash值是有的就可以了。
每次新new出来的对象hash值都是不同的
/*
hashCode():获取对象的哈希值。
*/
System.out.println(p1.toString());
System.out.println(p1.getClass().getName()+"#"+Integer.toHexString(p1.hashCode()));
网友评论