黑马程序员技术交流社区

标题: 什么叫正确的equals() [打印本页]

作者: 邵中国    时间: 2012-4-17 12:51
标题: 什么叫正确的equals()
正确的equals()必须满足以下5个条件
1.自反性。对任意x,x.equals(x)一定返回true。
2.对称性。对任意x和y,若果y.equals(x)返回true,则x.equals(y)也返回true。
3.传递性。对任意x,y,z,如果有x.equals(y)返回true,y.equals(z)返回true,则x.equals(z)一定返回true。
4.一致性。对任意x和y,如果对象中用于等价比较的信息没有改变,那么无论调用多少次x.equals(y),返回的结果应该保持一致,要么一直是true,要么一直是false。
5.对任意不是null的x,x.equals(null)一定返回false。
如果要使用自己的类作为HashMap的键,必须同时重载hashCode()和equals()

比较模糊

在此版的第一帖啊{:soso_e129:}

作者: 邵中国    时间: 2012-4-19 13:33
{:soso_e101:}
作者: 余耀明    时间: 2012-4-19 13:45
Object类是所有类的父类,Object中有一个equals(Object obj)方法,该方法public boolean equals(Object obj) {
        return (this == obj);
    }默认是比较两个对象的引用是否相同,不是内容是否相同,要想按自己的意愿比较,必须重写public boolean equals(Object obj)方法。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2