Java常用API---Object类

Object类概述

概述

Object类是所有类的父类,任何一个类的对象(包括数组),都可以调用Object类的方法

目标:

掌握Object类的常用方法

java 复制代码
常用方法:
boolean equals(Object obj):判断当前对象是否与参数对象"相等"
String toString():返回该对象的字符串表示形式
int hashCode():返回对象在堆内存的十进制地址值

需求:创建两个Student对象,利用Object提供的equals方法比较两个对象是否"相等"

java 复制代码
//学生类
public class Student {
    private String name;
    private int age;

    public Student() {
        System.out.println("空参构造");
    }

    public Student(String name, int age) {
        System.out.println("有参构造");
        this.name = name;
        this.age = 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;
    }
java 复制代码
Student stu1 = new Student("张三", 23);
Student stu2 = new Student("张三", 23);
//Student虽然没有声明父类,但是它的父类就是Object,可以使用equals方法
boolean result = stu1.equals(stu2);

通过底层代码分析,Object的equals方法衡量两个对象是否相等的条件,是比较对象地址值!
System.out.println(result);       
java 复制代码
//打印stu1对象
System.out.println(stu1);

//需求:尝试打印stu1不看到对象地址值,看到对象属性值!
 //打印语句的底层,获取的打印内容是通过调用对象的toString方法得到的,此时Student自己没有,是调用的Object的toString方法
//场景:当父类方法不满足子类需求,重写父类Object的toString方法

比较stu1和stu2对象是否相等,但是衡量的条件得根据属性值 来比较!

场景:当父类方法不能满足子类要求时,子类可以重写父类的方法

思路:让Student类重写Object父类的equals方法,在重写方法中根据对象属性值比较即可

java 复制代码
@Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Student student = (Student) o;

        if (age != student.age) return false;
        return name != null ? name.equals(student.name) : student.name == null;
    }

小结

  1. Object的equals方法的作用是什么?

    默认是比较两个对象的地址值,和"=="没区别

    如果子类重写equals,则比较对象的属性值

  2. Object的toString方法的作用是什么?

    默认是返回对象的地址字符串

    一般需要子类重写,去返回对象的属性值

  3. 字符串Object的hashCode方法的作用是什么?

    返回对象的十进制地址值

相关推荐
c***93771 小时前
SpringBoot实现异步调用的方法
java·spring boot·spring
云栈开源日记1 小时前
Python 开发技术栈梳理:从数据库、爬虫到 Django 与机器学习
数据库·爬虫·python·学习·机器学习·django
青衫码上行1 小时前
【Java Web学习 | 第15篇】jQuery(万字长文警告)
java·开发语言·前端·学习·jquery
凯子坚持 c2 小时前
Docker 容器实战:从镜像管理到私有仓库构建深度解析
java·docker·eureka
q***01653 小时前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
f***68604 小时前
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean)
java·spring boot·后端
likuolei5 小时前
Eclipse 快捷键
java·ide·eclipse
电子_咸鱼7 小时前
【STL string 全解析:接口详解、测试实战与模拟实现】
开发语言·c++·vscode·python·算法·leetcode
哈茶真的c7 小时前
【书籍心得】左耳听风:传奇程序员练级攻略
java·c语言·python·go
喝养乐多长不高7 小时前
JAVA微服务脚手架项目详解(三)
java·大数据·微服务·文件·地图·oss