Java 对象比较:== 与 equals 方法
Java 对象比较:== 与 equals 方法
代码示例:
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.age = age;
this.name = name;
}
}
class Deme01 {
public static void main(String[] args) {
// 创建两个学生对象
Student s1 = new Student('itheima', 16);
Student s2 = new Student('itheima', 16);
// 输出
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
输出结果:
false
false
解释:
虽然 s1 和 s2 的属性值相同,但它们是两个不同的对象。
-
== 比较:比较的是对象的内存地址,由于 s1 和 s2 分别指向不同的内存地址,所以结果为 false。
-
equals 比较:默认情况下,equals 方法也比较的是对象的内存地址。由于没有重写 equals 方法,因此结果也为 false。
结论:
如果要比较两个对象的属性值是否相同,需要重写 equals 方法。
代码示例:
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.age = age;
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Student other = (Student) obj;
return age == other.age && name.equals(other.name);
}
}
原文地址: https://www.cveoy.top/t/topic/nqv6 著作权归作者所有。请勿转载和采集!