Java  Object类中的常用API介绍

 更新时间:2022年11月29日 10:39:56   作者:蓝桉cyq  
这篇文章主要介绍了Java  Object类中的常用API介绍,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Java常用API介绍

API概念

什么是API?

API(Application Programming interface) 应用程序编程接口。

简单来说:就是Java帮我们已经写好的一些方法**,我们直接拿过来用就可以了。**

Object类

Object类的作用:

  • Object类的方法是一切子类对象都可以直接使用的,所以我们要学习Object类的方法。
  • 一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类

toString方法

方法名说明
toString()默认是返回当前对象在堆内存中的地址信息: 类的全限名@内存地址

基本使用:

例如有一个Student类

public class Test {
    public static void main(String[] args) {
        Student stu = new Student();

        // 方式一: 将返回的地址在变量中接收
        String str = stu.toString();
        System.out.println(str);

        // 方式二: 输出时, 直接调用toString方法
        System.out.println(stu.toString());

        // 方式三: 直接输出对象变量, 默认可以省略toString方法
        System.out.println(stu);
    }
}

问题引出:

在开发中直接输出对象变量,默认输出对象的地址其实是毫无意义的。

事实上, 开发中更多的时候是希望看到对象的内容数据而不是对象的地址信息。

toString存在的意义:

父类toString()方法存在的意义是为了被子类重写,以便返回对象的内容信息,而不是地址信息!!

演示代码:

例如我们有如下一个Student类

package com.chenyq.d12_api_object;

/**
    默认继承自Object
 */
public class Student {
    private String name;
    private int age;
    private double height;

    public Student() {
    }

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

    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 double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }
}

我们可以在该Student类中重写toString方法

package com.chenyq.d12_api_object;

/**
    默认继承自Object
 */
public class Student {
    private String name;
    private int age;
    private double height;

    public Student() {
    }

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

    // 重新toString方法
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", height=" + height +
                '}';
    }

    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 double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }
}

此时再调用Student对象变量的toString方法, 会调用我们自己重写的toString, 返回对象的内容

public class Test {
    public static void main(String[] args) {
        Student stu = new Student("chenyq", 18, 1.88);
        System.out.println(stu); // Student{name='chenyq, age=18, height=1.88}
    }
}

小结:

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

  • 让子类重写toString方法,以便返回子类对象中的内容。

equals方法

方法名说明
equals(Object o)默认是比较当前对象与另一个对象的地址是否相同,相同返回true,不同返回false

基本使用:

我们还是继续使用上面的Student类演示

public class Test2 {
    public static void main(String[] args) {
        Student stu1 = new Student("chenyq", 18, 1.88);
        Student stu2 = new Student("chenyq", 18, 1.88);

        // 这里equals调用的是Object中的
        System.out.println(stu1.equals(stu2)); // false
    }
}

问题思考:

直接比较两个对象的地址是否相同完全可以用 “==”, 那么为什么要使用equals呢?

equals存在的意义

在开发中, 其实我们并不会使用equals方法比较两个对象的地址, 通常是用来比较两个对象内容是否相同

而父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则。

演示代码:

重写equals方法, 自己定制比较规则: 例如比较两个对象内容是否相同

package com.chenyq.d12_api_object;

import java.util.Objects;

/**
    默认继承自Object
 */
public class Student {
    private String name;
    private int age;
    private double height;

    public Student() {
    }

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

    /**
     重写equals方法
     s1 -> this
     s2 -> o
     */
    @Override
    public boolean equals(Object o) {
        // 1. 判断this和o是否是同一个对象
        if (this == o) return true;
        // 2. 判断o是否为null以及this和o类型是否相同
        if (o == null || getClass() != o.getClass()) return false;
        // 3. 将o强转为Student类型
        Student student = (Student) o;
        // 4. 返回age, height, name的比较结果
        return age == student.age && Double.compare(student.height, height) == 0 && Objects.equals(name, student.name);

    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 double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }
}

此时再调用Student对象的equals方法, 就是调用的自己重写的equals

public class Test2 {
    public static void main(String[] args) {
        Student stu1 = new Student("chenyq", 18, 1.88);
        Student stu2 = new Student("chenyq", 18, 1.88);

        // 这里equals调用的是自己重写的, 比较对象内容是否相同
        System.out.println(stu1.equals(stu2)); // true
    }
}

到此这篇关于Java Object类中的常用API的文章就介绍到这了,更多相关Java Object类常用API内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用MyBatis-Plus灵活处理JSON字段的技巧与最佳实践

    利用MyBatis-Plus灵活处理JSON字段的技巧与最佳实践

    这篇文章主要给大家介绍了关于利用MyBatis-Plus灵活处理JSON字段的技巧与最佳实践,Mybatis-Plus可以很方便地处理JSON字段,在实体类中可以使用@JSONField注解来标记JSON字段,需要的朋友可以参考下
    2024-07-07
  • springboot Jpa多数据源(不同库)配置过程

    springboot Jpa多数据源(不同库)配置过程

    这篇文章主要介绍了springboot Jpa多数据源(不同库)配置过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • idea每次新打开的项目窗口maven都要重新设置问题

    idea每次新打开的项目窗口maven都要重新设置问题

    这篇文章主要介绍了idea每次新打开的项目窗口maven都要重新设置问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 详解java为什么不允许类多重继承却允许接口多重继承

    详解java为什么不允许类多重继承却允许接口多重继承

    这篇文章主要介绍了java为什么不允许类多重继承却允许接口多重继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 仅用5分钟极速入门Dubbo使用教程

    仅用5分钟极速入门Dubbo使用教程

    今天给大家介绍一款高性能、透明的远程过程调用框架dubbo,通过本文学习可以快速掌握Dubbo知识,感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • 了解java架构之微服务架构—雪崩效应

    了解java架构之微服务架构—雪崩效应

    这篇文章主要介绍了了解java架构之微服务架构—雪崩效应,微服务化产品线,每一个服务专心于自己的业务逻辑,并对外提供相应的接口,看上去似乎很明了,其实还有很多的东西需要考虑,,需要的朋友可以参考下
    2019-06-06
  • SpringBoot调用WebService接口方法示例代码

    SpringBoot调用WebService接口方法示例代码

    这篇文章主要介绍了使用SpringWebServices调用SOAP WebService接口的步骤,包括导入依赖、创建请求类和响应类、生成ObjectFactory类、配置WebServiceTemplate、调用WebService接口以及测试代码,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • springboot在idea下debug调试热部署问题

    springboot在idea下debug调试热部署问题

    这篇文章主要介绍了springboot在idea下debug调试热部署问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Java基础入门之switch怎么使用枚举

    Java基础入门之switch怎么使用枚举

    在Java开发中,switch语句是一种常用的流控制语句,而当使用枚举类型作为条件时,我们常常会遇到报错问题,那么该如何解决呢,下面就来详细讲讲
    2023-06-06
  • JAVA SpringBoot统一日志处理原理详解

    JAVA SpringBoot统一日志处理原理详解

    这篇文章主要介绍了SpringBoot的统一日志处理原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-09-09

最新评论