欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

hashCode方法

程序员文章站 2022-03-15 21:04:27
...

简单测试了一下结果如下

1.hashCode码由内容决定的

2.需要组合多个散列值时可以使用Objects.hash()这种方法

3.数组可以使用Arrays.hashCode()方法

 

理解可能不到位以上待补充

 

代码如下

package Date_11_9;

public class testHashCode {
    public static void main(String args[]){
        String s = "OK";
        StringBuilder sb = new StringBuilder("s");
        System.out.println(s.hashCode() + " " + sb.hashCode());

        String t = new String("OK");
        StringBuilder tb = new StringBuilder("s");
        System.out.println(t.hashCode() + " " + tb.hashCode());

        String a = "a";
        String b = "a";
        System.out.println(a.hashCode());
        System.out.println(b.hashCode());

        /*
        * 通过输出发现字符串s 和字符串t 的hashCode码是一致的,这是因为字符串的散列码是由内容决定的
        * 内容一致,散列码也是一致的
        * 
        * 但是在StringBuilder中两个对象的内容一致但是hashCode不一致
        * 这是因为在StringBuilder中没有定义hashCode方法,
        * 它的hashCode码是由Object类的默认的hashCode方法导出的对象的存储地址
        * */
        testhashcode1 test = new testhashcode1("钟镜清",20);
        System.out.println(test.hashCode());

        int[] i = new int[3];
        int[] n = i;
        System.out.println(i.hashCode() + " " + n.hashCode());
        System.out.println(i.equals(n));

    }
}


package Date_11_9;

import java.util.Objects;

class testhashcode1{
    String name;
    int age;

    public testhashcode1(String name, int age){
        this.name = name;
        this.age = age;
    }

    @Override
    public int hashCode(){
        return Objects.hash(name,age);  //需要组合多个散列值时可以使用这种方法
    }
}

 

相关标签: hashCode