import java.util.Objects; class Cat{//定义一个猫类 int age; String name; public Cat(int age,String name){ this.age = age; this.name = name; } @Override public boolean equals(Object o) {//boject类下的equals方法需要重写, //因为默认的equals方法只判断地址是否相同,不判断值 if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Cat cat = (Cat) o; return age == cat.age && Objects.equals(name, cat.name); } @Override public int hashCode() {//根据equals方法合同声明,重写equals方法必须重写hashCode return Objects.hash(age, name);//重新定义hash值,即使地址不一样,只要数据一样hash就一样 } } public class Test4 { public static void main(String[] args) { Cat cat = new Cat(18,"小明");//new的对象都会在栈区开辟一个新空间,如果不重写hashCode,hash值就不等 Cat cat1 = new Cat(18,"小明"); System.out.println(cat.hashCode());//这时打印的hash值就是相同的 System.out.println(cat1.hashCode()); System.out.println(cat.equals(cat1));//true } }
05-11
341
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交