Java API - Object类的常用API

这篇具有很好参考价值的文章主要介绍了Java API - 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文章来源地址https://www.toymoban.com/news/detail-401029.html

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 API - Object类的常用API的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java的Object类的方法

    Java的Object类是所有类的根类,它提供了一些通用的方法。下面是一些常用的Object类方法: 1. equals(Object obj):判断当前对象是否与给定对象相等。默认情况下,equals方法比较的是对象的引用,但可以通过在具体类中重写equals方法来改变其比较行为。 2. hashCode():返回当前对象的

    2024年02月06日
    浏览(31)
  • (八)vtk常用类的常用函数介绍(附带代码示例)

    vtk中类的说明以及函数使用 https://vtk.org/doc/nightly/html/annotated.html InsertNextPoint(double, double, double):插入点。 InsertNextCell (vtkIdType npts, const vtkIdType *pts):插入单元。 SetRadius(double):设置球体半径,默认值为 0.5。 SetCenter(double, double, double):设置球体的中心,默认值为 0,0,0。 SetPh

    2024年02月07日
    浏览(36)
  • 【JAVA】关于抽象类的概念

    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 在Java中,抽象类是一种特殊的类,它 无法被实例化 。它 只能被用作其他类的基类 ,以便子类可以继承它的属性和方法。今天我们就来谈谈JAVA中的抽象类。 抽象类是一种特殊的类, 它不能被实例化,而只能被继承

    2024年02月08日
    浏览(43)
  • String类的学习笔记(上):介绍String类及其常用方法的使用

    本文介绍了Java中用来描述操作字符串的String类,和其一些常用的基本操作方法,字符串的创建输出,字符串对象的比较,字符串查找,字符串的转化,字符串的替换,字符串拆分,字符串截取,和大小写转换,去除左右空格,子字符串包含,学会使用这些方法,能更方便的使用操作字符串~ 前言

    2023年04月23日
    浏览(58)
  • Java——ArrayList类的常用方法

    ArrayList对象是可变数组,可以不设置长度。本文只介绍一些常用方法。该对象是从0下标开始计算的。主要分成七个部分,初始化,增加元素,删除元素,修改元素,查找元素,遍历,排序。更多方法见https://www.jiyik.com/w/java/java-arraylist 容量大小,加载因子,扩容倍数见https://

    2024年02月13日
    浏览(47)
  • Java中String类的常用方法

    一、String 类的概念 java.lang.String 类用于描述字符串,Java程序中所有的字符串面值都可以用该类的对象加以描述。 该类由 final 修饰,表示该类 不能被继承 。 从 jdk1.9开始该类的底层不使用 char[] 来存储数据,而是改成 byte[] 加上编码标记,从而节约了一些空间。 该类描

    2023年04月08日
    浏览(78)
  • Kafka:Topic概念与API介绍

    事件被组织并持久地存储在 Topic 中, Topic 类似于文件系统中的文件夹,事件就是该文件夹中的文件。 Kafka 中的 Topic 始终是多生产者和多订阅者:一个 Topic 可以有零个、一个或多个生产者向其写入事件,也可以有零个、一个或多个消费者订阅这些事件。 Topic 中的事件可以根

    2024年02月05日
    浏览(95)
  • 【C++ STL】vector类最全详解(什么是vector?vector类的常用接口有哪些?)

    目录 一、前言 二、什么是vector ? 💦 vector的基本概念 💦vector的作用是什么 💦总结 三、 vector的(一维)定义 四、vector(一维)常用接口的使用  💦vector的常见构造(初始化)  💦vector的遍历及迭代器的操作 ① operator[ ]  ② at ( )  ③迭代器  ③ 范围for   💦vector的常见容量操

    2024年02月03日
    浏览(41)
  • 【C++ STL】string类最全解析(什么是string?string类的常用接口有哪些?)

    目录 一、前言  二、什么是 string ?  💦 string 类的基本概念 💦 string 类与 char * 的区别   💦 string 类的作用  💦 总结  三、string 的常用接口详解  💦string 类对象的默认成员函数 ① 构造函数(初始化) ② 赋值重载(初始化) 💦string 类对象的访问及遍历操作 ① operator[ ]

    2024年04月17日
    浏览(42)
  • Java中的String类的常用方法(对于字符串的常用操作)

    目录 一、获取指定索引的字符 二、 获取指定字符或者字符串的索引位置 三、判断字符串是否以指定内容开头或结尾 四、替换指定的字符或者是字符串 五、获取字符串的子串 六、将字符串转换为字符数组  七、比较字符串的内容是否相等  八、连接字符串 九、比较两个字

    2024年02月20日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包