Java重写object类的equals方法 Java怎样重写object类的equals方法详解

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Java重写object类的equals方法 Java怎样重写object类的equals方法详解

咯咯笑的大老虎   2021-01-28 我要评论

1.Object类的equals()方法:

比较两个对象是否是同一个对象,equals() 方法比较两个对象,是判断两个对象引用指向的是同一个对象,即比较 2 个对象的内存地址是否相等。是则返回true

Object类是所有类的父类,它的equals方法自然会被所有类继承,有一个子 类String对equals方法进行了覆盖(重写),使其具有了新功能

2.Object类的equals()方法与==没区别

Java.lang.String重写了equals()方法,把equals()方法的判断变为了判断其值

当有特殊需求,如认为属性相同即为同一对象时,需要重写equals()

在这里插入图片描述

总结:

1.基本数据类型数据值只能用

2.对于引用数据类型,和Object的equals方法是一样的。(查看源码)

由于String类对父类Object的equals方法的重写,导致equals与= =唯一的区别在于比较对象

例题 :

重写比较规则,判断两名学员(Student)是否为同一对象

Student相关属性

Id(学号)、name(姓名)、age(年龄)

如果两名学员的学号以及姓名相同,则为同一对象

在这里插入图片描述

1 对 Student类进行封装 然后在里面重写equals方法

方法代码:

public class Student {
 private int id;
 private String name;
 private int age;

 @Override //重写equals方法
 public boolean equals(Object obj) {
 if(obj instanceof Student){
  Student s1=(Student)obj;
  return this.id==s1.id&&this.name==s1.name&&this.age==s1.age;
 }else {
  System.out.println("错误");
  return false;
 }
 }

 public Student(int id, String name, int age) {
 this.id = id;
 this.name = name;
 this.age = age;
 }

 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 int getAge() {
 return age;
 }

 public void setAge(int age) {
 this.age = age;
 }
}

测试类进行测试

 public static void main(String[] args) {
 Student s1 = new Student(1,"张三",18);
 Student s2 = new Student(1,"张三",18);

 Student s3 = new Student(1,"张三",18);
 Student s4 = new Student(1,"张三",20);

 System.out.println(s1.equals(s2));

 System.out.println(s3.equals(s4));



 }

以上程序执行结果

在这里插入图片描述

 

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们