String有重写Object的hashcode和toString吗?
String重写了Object类的hashcode和toString方法。
当equals方法被重写时,通常有必要重写hashcode方法,以维护hashCode方法的常规协定,该协定声明相对等的两个必须有相同的hashcode。
1. object1.equals(object2)为true时, object1.hashCode() == object2.hashCode()为true。
2. object1.hashCode() == object2.hashCode() 为fasle时,object1.equals(object2)必定为false。
3. object1.hashCode() == object2.hashCode() 为true时, object1.equals(object2)不一定为true。
重写equals不重写hashcode会出现什么问题
在存储散列集合时(如Set类),如果原对象.equals(新对象),但没有对hashCode重写,即两个对象拥有不同的hashcode,则在集合中将会存储两个值相同的对象,从而导致混淆。因此在重写equals方法时,必须重写hashcode方法。