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

    返回对象的十进制地址值

相关推荐
Sirius.z7 小时前
第R6周:LSTM实现糖尿病探索与预测
python
名字还没想好☜8 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
·薯条大王8 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
Dxy12393102169 小时前
Python 如何使用 MySQL 的事务
python·mysql
ZJH__GO11 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆11 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光11 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
凤山老林11 小时前
Spring Boot @Async 线上实战:从默认配置到生产级线程池治理
java·spring boot·后端
marvelyu12 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
今儿敲了吗13 小时前
Python ——第三方包
笔记·python