纸上得来终觉浅,绝知此事要躬行
--陆游 问渠那得清如许,为有源头活水来 --朱熹
equals()的作用是用来判断两个对象是否相等,在Object类中,equals(Object obj)是通过判断两个对象的地址是否相等(是否是同一个对象)来区分它们是否相等,源码:
public boolean equals(Object obj)因为Object类是所有类的父类,因此在子类中使用equals(Object obj)时都是用来判断两个对象是否是同一个对象,当向判断两个对象的内容是否相等时需要重写equals()方法。还有常用的方法是“==”,等号也是对对象引用的判断。
{
return (this == obj);
}
public class Hello {在Object类中,hashCode()方法是本地方法,返回的是对象的地址值,而Object类中的equals()方法比较的也是两个对象的地址值,因此equals()相等,说明两个对象地址值的相等,因此hashCode()也就相等了。
public static void main(String []args)
{
Person1 person1=new Person1(10, "tian");
Person1 person2=new Person1(20, "tian");
if(person1.equals(person2))
{
System.out.println("相等");
}
else
{
System.out.println("不想等");
}
if(person1==person2)
{
System.out.println("相等");
}
else
{
System.out.println("不相等");
}
Person2 person22=new Person2(10, "tian");
Person2 person23=new Person2(10, "tian");
if(person22.equals(person23))
{
System.out.println("相等");
}
else
{
System.out.println("不相等");
}
if(person22==person23)
{
System.out.println("相等");
}
else
{
System.out.println("不相等");
}
}
public static class Person1
{
int age;
String name;
public Person1(int age,String name)
{
this.age=age;
this.name=name;
}
}
public static class Person2
{
int age;
String name;
public Person2(int age,String name)
{
this.age=age;
this.name=name;
}
@Override
public boolean equals(Object object)
{
if (object==null)
{
return false;
}
if(this==object)
{
return true;
}
if(this.getClass()!=object.getClass())
{
return false;
}
Person2 person2=(Person2)object;
return person2.name.equals(name)&&person2.age==age;
}
}
}
版权声明:知识在于分享,技术在于交流,转载时请留一个博主的链接就好
原文地址:http://blog.csdn.net/qq924862077/article/details/48094775