本帖最后由 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.
例子代码如开始所示。
|
|