Java的Object.hashCode的返回值到底是不是对象内存地址

如题所述

第1个回答  2017-09-02
在JDK中看到publicnativeinthashCode();这是一个本地方法,需要找源代码才能找到然后我在AndroidSDK中的JDKObject类找到了这个,应该是你想要的了publicinthashCode(){intlockWord=shadow$_monitor_;finalintlockWordStateMask=0xC0000000;//Top2bits.finalintlockWordStateHash=0x80000000;//Top2bitsarevalue2(kStateHash).finalintlockWordHashMask=0x0FFFFFFF;//Low28bits.if((lockWord&lockWordStateMask)==lockWordStateHash){returnlockWord&lockWordHashMask;}returnSystem.identityHashCode(this);}但最后的System.identityHashCode(this)方法还是一个本地方法,还得去找源码,你折腾的话自己去搜索吧。下面是String类的hashCode()方法,可以看下publicinthashCode(){inth=hash;if(h==0&&value.length>0){charval[]=value;for(inti=0;i
第2个回答  2017-09-02
不是,哈希值,根据某种方法计算出来的。