对equals的总结

来源:互联网 发布:rpm下载yum安装包下载 编辑:程序博客网 时间:2024/04/30 04:17

在Java语言中,==看作是基本、简单的,而equals是高级、复杂的。==叫做相等运算符,作用于对象时它的意义成为具体的了:判断对象的引用(地址值)是否相等而equals是Java中类型继承体系中的根类Object的一个方法。这个方法默认的实现为==判断; equals一般需要重载为我们的自定义实现,而不用继承而来的那个默认实现,自定义要实现的即是判断两个对象的内部数据是否相等的逻辑。 从各个方面严格来说,世界上没有两个一模一样的对象,因此在实现equals前, 必须遵守几个原则: 1.自反性 2.对称性。 3.传递性。 4.一致性。 具体内容详见JDK API文档。 

class Object { public equals(Object other) { return this == other; } } public Person /*extends Object*/ { private String name; private int age; @Override public int hashCode(){ //... } @Override public boolean equals(Object other) { if (other == null) reutrn false; if (other != this) return false;return (this.hashCode() == other.hashCode() && this.name.equals(other.name) && this.age == this.age); } }


0 0
原创粉丝点击