Java中equals()方法实例详解
在Java语言中,Object类中的equals()方法用来比较对象的内容是否相等。相较于Java中的"=="运算符来说,它比较的不是变量在内存中的地址,而是变量的内 容。因此,equals()方法在很多时候比"=="更加实用。
equals方法的详细用法
public boolean equals(Object obj)
参数说明:
- obj:要比较的对象。
方法说明:若两个对象内容相等,则equals方法返回true;否则返回false。
示例1:比较两个String类型对象值是否相等
String s1 = "hello";
String s2 = new String("hello");
System.out.println(s1.equals(s2)); //true
示例2:比较自定义类对象是否相等
public class Person {
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (obj == this) { //判断引用是否指向同一个对象
return true;
}
if (obj == null || obj.getClass() != getClass()) { //判断对象是否为null,以及类型是否匹配
return false;
}
Person p = (Person) obj; //强制类型转换
if (p.name == null || p.age != this.age) { //判断属性值是否相等
return false;
}
return p.name.equals(this.name);
}
}
Person p1 = new Person("Tom", 18);
Person p2 = new Person("Tom", 18);
Person p3 = new Person("Jack", 18);
System.out.println(p1.equals(p2)); //true
System.out.println(p1.equals(p3)); //false
equals方法注意事项
- 自反性:如果x != null,那么x.equals(x)一定是true。
- 对称性:如果x.equals(y)返回true,那么y.equals(x)也一定返回true。
- 传递性:如果x.equals(y)返回true,y.equals(z)也返回true,那么x.equals(z)也同样返回true。
- 一致性:如果x.equals(y)返回true,那么在x和y之间做任何操作,都应该保持一致性。
- 非空性:x.equals(null)应该总是返回false。
在自定义类中重写equals()方法时,应该满足以上几点规范,以保证程序的正确性。
总结
通过本文的讲解,我们了解了equals()方法的详细用法和注意事项,可以根据需求编写出适合自己的equals()方法。在实际开发中,判断对象内容是否相等时应该优先使用equals()方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中equals()方法实例详解 - Python技术站