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方法的作用是什么?

    返回对象的十进制地址值

相关推荐
哈库纳玛塔塔3 分钟前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
S***q3771 小时前
Spring Boot管理用户数据
java·spring boot·后端
天“码”行空1 小时前
java面向对象的三大特性之一多态
java·开发语言·jvm
毕设源码-郭学长1 小时前
【开题答辩全过程】以 基于SpringBoot框架的民俗文化交流与交易平台的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
张登杰踩1 小时前
VIA标注格式转Labelme标注格式
python
Learner2 小时前
Python数据类型(四):字典
python
好大哥呀2 小时前
Java Web的学习路径
java·前端·学习
f***14772 小时前
SpringBoot实战:高效实现API限流策略
java·spring boot·后端
on the way 1232 小时前
day06-SpringDI 依赖注入
java·spring
odoo中国2 小时前
Odoo 19 模块结构概述
开发语言·python·module·odoo·核心组件·py文件按