hashCode():在字符串后返回一个整数

时间:2015-04-25 11:40:38

标签: java hashcode

我不会在这段代码中理解hashcode()方法:如果有字符串,你怎么能返回一个整数...基本上你在一个数字旁边添加一个字符串但是并没有不料一串 我也不理解函数等于什么是对象o什么是o insteadof

  public Imatriculation(int numeros, String word) {
       this.numeros = numeros; 
       this.word = word;

   }   
   public int hashCode() { 
       return this.word.hashCode() + this.numeros; 
   }

   public boolean equals(Object o) { 
       return   o instanceof Imatriculation 
             && this.word.equals(((Imatriculation) o).word) 
             && this.numeros == ((Imatriculation) o).numeros;
   }

2 个答案:

答案 0 :(得分:0)

正如已经指出的那样,hashcode返回一个int而不是一个字符串。

“o”只是java中的任何对象,它可以是任何对象,因此instanceof用于检查对象“o”是否为Imatriculation,然后再继续检查对象的细节。

答案 1 :(得分:0)

String#hashCode()覆盖

Object#hashCode(),因此它也会返回int。来自String来源:

public int hashCode() {  // <- it returns int!!!
    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()的主要目的是&#34;数字代表&#34;一个类的实例,以确定它应该占用哪个hash table桶。