A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a80C51 中级黑马   /  2015-9-10 22:52  /  256 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 a80C51 于 2015-9-10 22:53 编辑
  1. class Person
  2. {
  3.         private String name;
  4.         private int id;
  5.        
  6.         Person(String name,int id)
  7.         {
  8.                 setName(name);
  9.                 setId(id);
  10.         }
  11.        
  12.         public void setName(String name)
  13.         {
  14.                 this.name = name;
  15.         }
  16.        
  17.         public String getName()
  18.         {
  19.                 return this.name;
  20.         }
  21.        
  22.         public void setId(int id)
  23.         {
  24.                 this.id = id;
  25.         }
  26.        
  27.         public int getId()
  28.         {
  29.                 return this.id;
  30.         }
  31.        
  32.         public boolean equals(Object obj)
  33.         {
  34.                 if(this == obj)
  35.                         return true;
  36.                 else if((obj != null)&&(obj.getClass() == Person.class))
  37.                 {
  38.                         Person pTemp = (Person)obj;
  39.                        
  40.                         if((this.getName().equals(pTemp.getName()))
  41.                                 &&(this.getId() == pTemp.getId()))
  42.                                 return true;
  43.                 }
  44.                 else
  45.                         return false;
  46.                        
  47.                 return false;
  48.         }
  49. }

  50. public class OverrideEqual
  51. {
  52.         public static void main(String[] args)
  53.         {
  54.                 Person p1= new Person("Wayne",1234);
  55.                 Person p2 = new Person("Bruce",12345);
  56.                 Person p3= new Person("Wayne",1234);
  57.                
  58.                 System.out.println("p1==p2?"+(p1.equals(p2)));
  59.                 System.out.println("p1==p2?"+(p1.equals(p3)));
  60.         }
  61. }
复制代码

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.

例子代码如开始所示。

2 个回复

倒序浏览
equal重写eclipse里的sourse有
回复 使用道具 举报
wu199309023 发表于 2015-9-10 23:00
equal重写eclipse里的sourse有

谢谢提醒哈。
对于一个还没用eclipse的人来说,这个暂时没有注意到。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马