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

    返回对象的十进制地址值

相关推荐
似水明俊德2 分钟前
01-C#.Net-泛型-学习笔记
java·笔记·学习·c#·.net
百锦再2 分钟前
飞算 JavaAI:我的编程强力助推引擎
java·spring·ai·编程·idea·code·飞算
阿贵---13 分钟前
实战:用Python开发一个简单的区块链
jvm·数据库·python
今儿敲了吗18 分钟前
python基础学习笔记第三章
笔记·python·学习
yosh'joy!!20 分钟前
Python
python
阿钱真强道26 分钟前
18 Python 关联分析:Apriori 算法——如何从购物小票里找到高频组合
python·apriori·关联规则·频繁项集挖掘·购物篮分析
wuyaolong00735 分钟前
Spring Boot 3.4 正式发布,结构化日志!
java·spring boot·后端
小心我捶你啊37 分钟前
提升爬虫稳定性的关键,Python爬虫代理IP解析与轮换策略
爬虫·python·tcp/ip
hua8722242 分钟前
Golang 构建学习
java·开发语言·学习
大傻^43 分钟前
LangChain4j RAG 核心:Document、Embedding 与向量存储抽象
开发语言·人工智能·python·embedding·langchain4j