欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

equals方法范例,equals范例,由于Object类默认提

来源: javaer 分享于  点击 49832 次 点评:84

equals方法范例,equals范例,由于Object类默认提


由于Object类默认提供的equals方法,只是比较对象的地址,即其比较的结果和"=="的结果是一样的.

而实际应用中,对象是否相等是由对象特征所决定的,由此Object提供的equal方法,不可用,需要重写.

而写equals方法,应试满足下列条件:

自反性:对任意X,X.equals(X)一定返回为true;

对称性:对任意X,Y,如果X.equals(Y)为true,那么Y.equals(X)也必须为true;

传递性:对任意X,Y,Z,如果X.equals(Y)为true,Y.equals(Z)为true,那么X.equals(Z)也必须true;

一致性:对任意X,Y,如果对象中用于比较的信息,没有发生改变,那么无论调用多少次X.equals(Y),或者Y.equals(X),其结果必须是一样的.要么一直为true,要么一直为false;

对任何不是null的X,X.equals(null),必须为false;

另:有部分人在equals()方法中,用了instanceof运算,但是其有一定问题.

instanceof判断是的前面对象为否为类的实例或其子类,如果则返回true.

package com.study;public class Dog {    int id;    String name;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public boolean equals(Object obj) {        //同一对象直接返回true;        if (this == obj) {            return true;        }        //只有当obj不为空,且为当前类时,才做对象特征比较        if (obj != null && obj.getClass() == Dog.class) {            Dog dog = (Dog) obj;            if (this.getId() == dog.getId()) {                return true;            }        }        return false;    }}//该片段来自于http://byrx.net
相关栏目:

用户点评