Java 基础知识复习总结
equals是什么?
equals方法是基类Object中的方法,因此对于所有的继承与Object的类都会有该方法,equals()用于判断对象的内存地址引用是否是用一个地址,相等返回true,否则返回false。
重写equals方法一般用来比较对象的内容是否相等
例子
重写equals
public class Student {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (this.getClass() != obj.getClass()) {
return false;
}
Student student = (Student) obj;
if (name == null) {
return false;
}
if (id == student.getId() && name.equals(student.getName())) {
return true;
}
return false;
}
public static void main(String[] args) {
Student stu1 = new Student(1,"学生1");
Student stu2 = new Student(1,"学生1");
System.out.println(stu1.equals(stu2)); //返回true 重写了equals方法是对比里面的具体内容
}
}
没有重写equals
public class Student1 {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student1(int id, String name) {
this.id = id;
this.name = name;
}
public static void main(String[] args) {
Student1 stu1 = new Student1(1,"学生1");
Student1 stu2 = new Student1(1,"学生1");
System.out.println(stu1.equals(stu2)); //没有重写就是false,因为调用的是Object父类的equals,这比较的是 == ,是地址值
}
}
==和equals()的区别
==等于比较运算符,如果进行比较的两个操作数都是数值类型,即使他们的数据类型不相同,只要他们的值相等,也都将返回true.如果两个操作数都是引用类型,那么只有当两个引用变量的类型具有父子关系时才可以比较,而且这两个引用必须指向同一个对象,才会返回true.(在这里我们可以理解成比较的是两个变量的内存地址)
1、= =:是运算符。 可以比较基本类型,也可以比较引用类型。对于基本类型就是比较值,而引用类型就是比较内存地址。并且必须保证符号左右两边的变量类型一致,即都是比较基本类型,或者都是比较引用类型。
2、equals():是java.lang.Object类里面的方法。只能适用于引用数据类型。如果类的该方法没有被重写过默认也是==
总结
- "=="主要比较两个引用的对象是否相等,而equals()方法比较的是两个对象的实际内容
- ==比较的是值。
- equals比较的是引用数据类型
- 如果没有重写hashCode和equals方法,比较的是地址值,因为Object的equals方法中使用是==
######个人总结
第一次学习写博客,有很多不足的地方需要改进,梳理知识点表达也不是很清晰,排版,格式点也是非常的不熟练,但是最终还是迈出了第一步-,希望自己继续努力加油,坚持下去。加油!!