如果x.equals==true,那么x和y的hashcode相同,这句话对吗

2025-04-29 02:10:33
推荐回答(1个)
回答1:

是对的,每个类默认继承Object对象,关键是看你如何去实现 hashCode()和equals()这两个函数;
给你个实例去运行感受下,再去看下String这个类的源代码,比较下这两个函数的实现方法;
和这些函数类似的一个函数是 toString() 等 都值得研究下的。对于入门还是很有帮助的。
public class MyTest
{

private int data = 0;

public int getData() {
return data;
}

public void setData(int data) {
this.data = data;
}

public MyTest(int i)
{
this.data = i;
}

@Override
public boolean equals(Object obj)
{
return (this.getData() == ((MyTest)obj).getData());
}

@Override
public int hashCode()
{
Random r = new Random();
return r.nextInt();
}

public static void main(String[] args)
{
MyTest t1 = new MyTest(10);
MyTest t2 = new MyTest(10);

System.out.println(t1.equals(t2));
System.out.println(t1.hashCode());
System.out.println(t2.hashCode());

}

}