哈希值:是一个十进制的整数 由系统随机给出(是一个模拟出来的地址值,不是真的物理地址值)也是地址值的十进制 地址值是十六进制
在Object类中有一个方法可以返回该对象的哈希值
HashCode的源码:
public native int hashCode();
native:代表调用的是本地操作系统的方法
public class Person extends Object {
@Override
public int hashCode() {
return 1;//重写哈希值
}
}
public class FuXi2 {
public static void main(String[] args) {
Person p = new Person();
int i = p.hashCode();
Person p1 = new Person();
int i1 = p1.hashCode();
System.out.println(i==i1);//哈希值经过重写相同true
boolean equals = p.equals(p1);
System.out.println(equals);//但实际物理地址值不一样false
String s = new String("aaaaa");
String s1 = new String("aaaaa");
boolean b = s.hashCode() == s1.hashCode();//字符串内容相同哈希值也相同
System.out.println(b);
System.out.println(s.equals(s1));//实际物理地址值也一样
}
}