hashCode()方法原始碼執行簡要分析

三人行必有吾師焉發表於2020-10-03

執行程式碼

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的數值,返回給呼叫者

如有錯誤還請大佬多多指點,小弟在此多謝。

相關文章