equals和HashCode都是Object对象的方法
原生的equals:严格判断一个对象是否相等
原生的HashCode:根据内存地址换算出来一个int值
两个对象相等,equals返回true,他们的HashCode一定相等
两个对象HashCode相同,他们不一定相同(equals返回不一定为true)
为啥重写equals方法:他比较的是对象引用是否指向同一块内存地址,重写之后是为了比较两个对象的value是否相等
为啥重写HashCode方法:保证同一对象在equals为true的情况下HashCode值必定相同,如果重写equals而没有重写HashCode方法,可能会导致equals为true而HashCode不相同