哈希值
哈希值:是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来得到的地址,不是数据实际存储的物理地址)
方法:
- int hasCode():返回该对象的哈希码值,属于Object类中的方法。
String类的哈希值:String类重写Object类的hashCode方法。
哈希表=数组+链表
哈希表=数组+红黑树(提高查询速度)
如果链表的长度超过了8位,那么就会把链表转换为红黑树。
public class HashCode {
public static void main(String[] args) {
//Person类默认继承了Object类,所以可以使用Object类的hashCode方法
Person p1 = new Person();
int h1 = p1.hashCode();
System.out.println(h1);
Person p2 = new Person();
int h2 = p2.hashCode();
System.out.println(h2);
System.out.println(p1);//这里面的数字就是对应h1的十六进制形式
System.out.println(p2);//这里面的数字就是对应h2的十六进制形式
//String类重写Object类的hashCode方法
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
}
}
输出结果:
2129789493
668386784
Person@7ef20235
Person@27d6c5e0
96354
96354