黑马程序员技术交流社区
标题:
Object类equals方法总结
[打印本页]
作者:
a80C51
时间:
2015-9-10 22:52
标题:
Object类equals方法总结
本帖最后由 a80C51 于 2015-9-10 22:53 编辑
class Person
{
private String name;
private int id;
Person(String name,int id)
{
setName(name);
setId(id);
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
public void setId(int id)
{
this.id = id;
}
public int getId()
{
return this.id;
}
public boolean equals(Object obj)
{
if(this == obj)
return true;
else if((obj != null)&&(obj.getClass() == Person.class))
{
Person pTemp = (Person)obj;
if((this.getName().equals(pTemp.getName()))
&&(this.getId() == pTemp.getId()))
return true;
}
else
return false;
return false;
}
}
public class OverrideEqual
{
public static void main(String[] args)
{
Person p1= new Person("Wayne",1234);
Person p2 = new Person("Bruce",12345);
Person p3= new Person("Wayne",1234);
System.out.println("p1==p2?"+(p1.equals(p2)));
System.out.println("p1==p2?"+(p1.equals(p3)));
}
}
复制代码
1,Object类
是所有对象的直接或者间接的父类。
该类中定义的功能是所有对象都具备的功能。
2,该类中的equals()方法要求两个引用变量指向同一个对象才会返回出。
换言之,其判断标准为所引用的地址值一致才能返回true.故本身并没有什么实际意义。
故一般需要重写该方法。
3,通常重写equals方法应满足的条件有
a,自反性,对任意的x,x。equals(x)一定返回true;
b,对称性,对任意的x和y,如果y.equals(x)返回true,则x.equals(y)也返回
true;
c,传递性,对于任意x,y,z,如果x.equals(y)返回true,y.equals(z)返回true,
则x.quals(z)一定返回true。
d,一致性,对任意x和y,如果对象中用于等价比较的信息没有改变,那么无论调
用x.equals(y)多少次,返回的结果应该保持一致,要么一直是true,要么一直是false。
e,对任何不是null的x,x.equals(null)一定返回false.
例子代码如开始所示。
作者:
wu199309023
时间:
2015-9-10 23:00
equal重写eclipse里的sourse有
作者:
a80C51
时间:
2015-9-10 23:09
wu199309023 发表于 2015-9-10 23:00
equal重写eclipse里的sourse有
谢谢提醒哈。
对于一个还没用eclipse的人来说,这个暂时没有注意到。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2