Java中常用API总结(4)—— Object类(含实例解读和源码阅读)

简介: Object类所在包是java.lang包,Object 是类层次结构的根,每个类都可以将 Object 作为超类。所有类都直接或者间接的继承自该类;换句话说,该类所具备的方法,其他所有类都继承了。

一、前言


本文将讲述有关于Object类相关知识点


二、概述


1.API帮助文档


Object类所在包是java.lang包,Object 是类层次结构的根,每个类都可以将 Object 作为超类。所有类都直接或者间接的继承自该类;换句话说,该类所具备的方法,其他所有类都继承了。


2636f92a8aae4bc2869ebeee9e03473f.png


2.使用方法


一般情况下我们很少去主动的创建Object类的对象,调用其对应的方法;更多的是创建Object类的某个子类对象,然后通过子类对象调用Object类中的方法


edbf249f73634f0fbd5fa3fa3e32c321.png


三、常用方法


1.toString方法


1️⃣格式


public String toString()


2️⃣实例


这里我们构造一个Person类,在测试类的main方法中去创建Person对象,然后调用该对象的toString方法获取该对象的字符串表现形式,并将结果进行输出


Person类


public class Person {
    String name;
    String sex;
    int age;
    public Person() {
    }
    public Person(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}


test类


public class test {
    public static void main(String[] args) {
        Person p = new Person("张三","男",20);
        String person1 = p.toString();
        System.out.println(person1);
    }
}


输出结果


TestToString.Person@4554617c


b9c0cb91af9646a9ae323fee7cae1464.png


3️⃣源码阅读


这里输出的是地址值,而这与toString的源码有关系。我们选中toString后Ctrl+B跟进查看一下源码,发现底层源码的逻辑就是输出地址值,那么要输出成员变量的字符串形式要进行其它操作


d0ae1afd63db43179cdf9a5014ef4d2a.png


4️⃣快捷键重写方法


  • 在Person类的空白处(建议在成员属性下方空白处)使用Alt+Insert快捷键,点击toString


e3a201ed1fff41d6b8c07e00876fc3f0.png


  • 选中所有的属性后点击确定


3b3e55b45bab4fac8a280bb0ad9e5a14.png


  • IDEA自动重写toString方法


9be773419d2e47339ae096afa31a5d7b.png


  • 再运行test类查看结果


Person{name=‘张三’, sex=‘男’, age=20}


6ce113af9a3a4e1d9e8ea5749b5e4feb.png


2.equals方法


1️⃣格式


public boolean equals(Object obj)


2️⃣实例


这里我们构造一个Person类,在测试类的main方法中去创建两个Person对象,然后调用该对象的equals方法获取该对象的字符串表现形式,并将结果进行输出


Person类


public class Person {
    String name;
    String sex;
    int age;
    public Person() {
    }
    public Person(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
public class Test2 {
    public static void main(String[] args) {
        Person p1 = new Person("张三","男",20);
        Person p2 = new Person("张三","男",20);
        boolean result = p1.equals(p2);
        System.out.println(result);
    }
}


false


83fe3a6ef2bf4f2a8da3dc412e1b66cc.png


3️⃣源码阅读


选中equals后使用快捷键Ctrl+B跟进查看源码,通过源码我们可以发现默认情况下equals方法比较的也是对象的地址值,所以我们要重写该方法,比较两个对象的属性


9c7c64567a83499ba788dcf0c528d412.png


4️⃣重写方法


  • 在空白处(建议在重写的toString方法下)使用Alt+Insert快捷键,选择equal和hashCode()


a731bd86b2fb47e6af4c6ddd21c0d87a.png


  • 直接点击下一个


e1d33af0f30346aead3c32b58b2b3a69.png


  • equals包含字段要把三个属性都勾选上


0a3bea7375f4443486b966a6322f3e0e.png


  • hashCode包含字段所有属性要取消勾选


09a9a33fad03493484266abf53fd58e3.png


  • 点击确定后会自动重写方法,这里需要把重写hashCode方法删除


e09cbb53a94343a88bc06e6a50c84e0c.png


  • 再运行一次,查看结果


最终结果


true


cc89d7d87d954bfebd051dfc9f1900ef.png


3.对象克隆


这个会在下一篇文章中具体讲述,其中包含浅克隆和深克隆以及实例解读


四、结语


接下来会细讲Object类中的对象克隆方法(深克隆和浅克隆)

相关文章
|
5月前
|
JSON Java API
【干货满满】分享京东API接口到手价,用Java语言实现
本示例使用 Java 调用京东开放平台商品价格及优惠信息 API,通过商品详情和促销接口获取到手价(含优惠券、满减等),包含签名生成、HTTP 请求及响应解析逻辑,适用于比价工具、电商系统集成等场景。
|
4月前
|
数据安全/隐私保护 iOS开发 开发者
完整的苹果内购in-purchase实例-采用object-c语言使用苹果的Storyboard开发模式的完整购买实例
完整的苹果内购in-purchase实例-采用object-c语言使用苹果的Storyboard开发模式的完整购买实例
153 5
|
10月前
|
缓存 监控 负载均衡
如何提升 API 性能:来自 Java 和测试开发者的优化建议
本文探讨了如何优化API响应时间,提升用户体验。通过缓存(如Redis/Memcached)、减少数据负载(REST过滤字段或GraphQL精确请求)、负载均衡(Nginx/AWS等工具)、数据压缩(Gzip/Brotli)、限流节流、监控性能(Apipost/New Relic等工具)、升级基础设施、减少第三方依赖、优化数据库查询及采用异步处理等方式,可显著提高API速度。快速响应的API不仅让用户满意,还能增强应用整体性能。
|
5月前
|
API 开发工具 开发者
客流类API实测:门店到访客群画像数据
本文介绍了一个实用的API——“门店到访客群画像分布”,适用于线下实体门店进行客群画像分析。该API支持多种画像维度,如性别、年龄、职业、消费偏好等,帮助商家深入了解顾客特征,提升运营效率。文章详细说明了API的参数配置、响应数据、接入流程,并附有Python调用示例,便于开发者快速集成。适合零售、餐饮等行业从业者使用。
客流类API实测:门店到访客群画像数据
|
5月前
|
JSON Java API
【干货满满】分享拼多多API接口到手价,用Java语言实现
本方案基于 Java 实现调用拼多多开放平台商品详情 API,通过联盟接口获取商品到手价(含拼团折扣与优惠券),包含签名生成、HTTP 请求及响应解析逻辑,适用于电商比价、导购系统集成。
|
5月前
|
JSON Java API
【干货满满】分享淘宝API接口到手价,用Java语言实现
本文介绍了如何使用 Java 调用淘宝开放平台 API 获取商品到手价,涵盖依赖配置、签名生成、HTTP 请求与响应解析等核心实现步骤。
|
6月前
|
JSON JavaScript 前端开发
Python+JAVA+PHP语言,苏宁商品详情API
调用苏宁商品详情API,可通过HTTP/HTTPS发送请求并解析响应数据,支持多种编程语言,如JavaScript、Java、PHP、C#、Ruby等。核心步骤包括构造请求URL、发送GET/POST请求及解析JSON/XML响应。不同语言示例展示了如何获取商品名称与价格等信息,实际使用时请参考苏宁开放平台最新文档以确保兼容性。
|
10月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
编解码 人工智能 缓存
自学记录鸿蒙API 13:实现多目标识别Object Detection
多目标识别技术广泛应用于动物识别、智能相册分类和工业检测等领域。本文通过学习HarmonyOS的Object Detection API(API 13),详细介绍了如何实现一个多目标识别应用,涵盖从项目初始化、核心功能实现到用户界面设计的全过程。重点探讨了目标类别识别、边界框生成、高精度置信度等关键功能,并分享了性能优化与功能扩展的经验。最后,作者总结了学习心得,并展望了未来结合语音助手等创新应用的可能性。如果你对多目标识别感兴趣,不妨从基础功能开始,逐步实现自己的创意。
374 60
|
10月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
282 11