hashCode()方法原始碼執行簡要分析
執行程式碼
public class Demo06 {
public static void main(String[] args) {
String s="hello";
System.out.println(s.hashCode());
}
}
以下是hashCode()原始碼
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
分析:以物件直接呼叫hashCode()方法為例
hashCode()方法在java.lang.String類下
功能是返回此字串的雜湊碼
先判斷傳入的值長度大於o,再分拆並儲存至char[]陣列,通過for()遍歷,
呼叫hashCode公式h = 31 * h + val[i];
以傳入hello為例,通過ASCII碼錶 h 104,e 101, l 108,o 111
h=31*0+104 h=104
h=31*104+101 h=3325
h=31*3325+108 h=103183
h=31*103183+108 h=3198781
h=31*3198781+111 h=99162322
最後return h的數值,返回給呼叫者
如有錯誤還請大佬多多指點,小弟在此多謝。
相關文章
- Laravel 原始碼方法執行類詳細分析Laravel原始碼
- Java原始碼之String的HashCode方法Java原始碼
- 執行流程原始碼分析原始碼
- String中hashCode方法的執行緒安全執行緒
- Mybatis執行流程原始碼分析MyBatis原始碼
- 執行緒池原始碼分析執行緒原始碼
- JUC之執行緒池基礎與簡單原始碼分析執行緒原始碼
- SpringMVC執行流程及原始碼分析SpringMVC原始碼
- EOS原始碼分析(2)EOS執行原始碼
- Zookeeper原始碼分析(一) ----- 原始碼執行環境搭建原始碼
- Python執行緒池ThreadPoolExecutor原始碼分析Python執行緒thread原始碼
- Dubbo RPC執行緒模型 原始碼分析RPC執行緒模型原始碼
- 原始碼分析OKHttp的執行過程原始碼HTTP
- 深入wepy原始碼:wepy執行原理分析原始碼
- 以太坊原始碼分析(18)以太坊交易執行分析原始碼
- Springboot中mybatis執行邏輯原始碼分析Spring BootMyBatis原始碼
- Java多執行緒之Thread原始碼分析Java執行緒thread原始碼
- 執行緒池之ScheduledThreadPoolExecutor執行緒池原始碼分析筆記執行緒thread原始碼筆記
- 執行緒池之ThreadPoolExecutor執行緒池原始碼分析筆記執行緒thread原始碼筆記
- 原始碼簡析Spring-Integration執行過程原始碼Spring
- qiankun 2.x 執行時沙箱 原始碼分析原始碼
- ConcurrentHashMap執行緒安全機制以及原始碼分析HashMap執行緒原始碼
- 多執行緒基礎(十九):Semaphore原始碼分析執行緒原始碼
- Netty原始碼分析之NioEventLoop(三)—NioEventLoop的執行Netty原始碼OOP
- laravel 應用層執行過程原始碼分析Laravel原始碼
- Java排程執行緒池ScheduledThreadPoolExecutor原始碼分析Java執行緒thread原始碼
- Zookeeper原始碼分析(四) —– 叢集模式(replicated)執行原始碼模式
- jdk1.8 執行緒池部分原始碼分析JDK執行緒原始碼
- Zookeeper原始碼分析(三) ----- 單機模式(standalone)執行原始碼模式
- Zookeeper原始碼分析(四) ----- 叢集模式(replicated)執行原始碼模式
- 比特幣原始碼分析:多執行緒檢查指令碼比特幣原始碼執行緒指令碼
- java為什麼要重寫hashCode和equals方法Java
- ElementUI 簡要原始碼解析——Basic篇UI原始碼
- ArrayList方法原始碼分析原始碼
- MediaScanner原始碼簡單分析原始碼
- DRF之請求執行流程和APIView原始碼分析APIView原始碼
- Netty原始碼分析之Reactor執行緒模型詳解Netty原始碼React執行緒模型
- JUC(4)---java執行緒池原理及原始碼分析Java執行緒原始碼