- equals
-
public boolean equals(Object obj)
指示某个其他对象是否“等于”此对象。equals
方法在非null对象引用上实现等价关系:- 自反性 :对于任何非空的参考值
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)
始终返回true
或始终返回false
,前提是未修改对象上的equals
比较中使用的信息。 - 对于任何非空的参考值
x
,x.equals(null)
应该返回false
。
类
Object
的equals
方法实现了对象上最具区别的可能等价关系; 也就是说,对于任何非空引用值x
和y
,当且仅当x
和y
引用同一对象(x == y
具有值true
)时,此方法返回true
。请注意,通常需要在重写此方法时覆盖
hashCode
方法,以便维护hashCode
方法的常规协定,该方法声明相等对象必须具有相等的哈希代码。参数
obj
- 要与之比较的参考对象。结果
true
如果此对象与obj参数相同; 否则为false
。另请参见:
- 自反性 :对于任何非空的参考值
-
public class qxy { public static void main(String[] args) { person p=new person("张三",18); person p1=new person("张三",18); System.out.println(p); System.out.println(p.toString()); System.out.println(p.equals(p1)); } } public class person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public person(String name, int age) { super(); this.name = name; this.age = age; } public person() { super(); // TODO Auto-generated constructor stub } public String toString() { return "我是这样一个人"+this.name+this.age; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; person other = (person) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } } 我是这样一个人张三18 我是这样一个人张三18 true
-
Object类中,equals
最新推荐文章于 2022-09-15 14:23:49 发布
该博客讨论了Java中equals方法的重写,强调了等价关系的性质,并通过一个示例展示了如何在Person类中正确实现equals方法,确保对象属性的比较。此外,还提到了在重写equals时通常需要同时重写hashCode方法以保持一致性。
摘要由CSDN通过智能技术生成