/*
哈希值:是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来得到地址,不是数据实际存储的物理地址)
在Object类有一个方法,可以获取对象的哈希值。
int hashCode() 返回该对象的哈希码值。
hashCode方法的源码:
public native int hashCode();
native:代表该方法调用的是本地操作系统的方法
*/
public class Demo01HashCode {
public static void main(String[] args) {
//Person类继承了Object类,所以可以使用Object类的hashCode方法
Person p1 = new Person();
int h1 = p1.hashCode();
System.out.println(h1);//42121758 1
Person p2 = new Person();
int h2 = p2.hashCode();
System.out.println(h2);//1355531311 1
/*
toString方法的源码:
return getClass().getName() + "@" + Integer.toHextring(hashCode());
*/
//toString把哈希值转换为16进制
System.out.println(p1);//@1c53fd30
System.out.println(p2);//@50cbc42f
//虽然哈希值是一样的,但实际地址值是不同的
System.out.println(p1 == p2);//false
/*
String类的哈希值
String类重写Object类的hashCode方法
*/
//在常量池中,字符串相同,他们的地址值也是一样的
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
}
}
IDEA-哈希值
最新推荐文章于 2023-10-06 11:47:24 发布