package cn.itcast.day12.demo02;
/**
* @author admin
* @version 1.0.0
* @ClassName Demo04.java
* @Description TODO
* @createTime 2021年09月24日 18:25:00
*/
/**
* hashCode方法的源码
* public native int hashCode();
* native代表该方法调用的是本地操作系统的方法
*/
public class Demo04 extends Object {
public static void main(String[] args) {
/**
* 这个Person类一开始是直接new的 哈希值输出打印为460141958
* 后面为了试验重写 new了一个Person类 继承Object类 重写了hashcode方法中的返回值 为1
*/
Person person = new Person();
int i = person.hashCode();
System.out.println("i = " + i);//i = 460141958
Person person1 = new Person();
int i1 = person1.hashCode();
System.out.println("i1 = " + i1);//i1 = 1163157884
/**
* toString方法的源码
* public String toString() {
* return getClass().getName() + "@" + Integer.toHexString(hashCode());
* }
*/
System.out.println("person = " + person);//person = cn.itcast.day11.demo01.Person@1b6d3586
System.out.println("person1 = " + person1);//person1 = cn.itcast.day11.demo01.Person@4554617c
System.out.println(person == person1);//false
/**
* String类的哈希值
* String类重写Object类的hashcode方法
*
* 重写:重新是子类和父类之间 子类重写父类的方法
*
*/
String s1 = "sadfas";
String s2 = "sadfas";
System.out.print(s1.hashCode() + " ");//这两个hashcode值是一样的-909953150 -909953150
System.out.println(s2.hashCode());
/**
* 这两个字符串比较特殊 字符串不一样但是哈希值是一样的
* 1179395
* 1179395
* 这就是哈希值 一个十进制的整数
*/
System.out.println("重地".hashCode());
System.out.println("通话".hashCode());
}
}
Person类
package cn.itcast.day12.demo02;
/**
* @author admin
* @version 1.0.0
* @ClassName Demo05.java
* @Description TODO
* @createTime 2021年09月24日 18:55:00
*/
public class Person extends Object{
@Override
public int hashCode() {
return 1;
}
}