二十四、常用API之Object

前面学习的Java的语法基础, 后面的几篇介绍一下Java的常用API
那么什么是API?(Application Programming Interface,应用程序编程接口
API就是一组用于构建和集成应用软件的定义和协议。
学习类的过程就是学习Java的过程:换句话说学Java就是学习类

  • 首先,了解这个类是干啥的(看介绍)JDK帮助文档由官方类的解释
  • 看构造方法
  • 看常量或者静态属性
  • 看有哪些方法,静态方法还是成员方法 (这个API能实现什么功能)
  • 调用方法 (使用其中的功能)

Object是老祖宗类,所有类都继承Object类并实现了他所有的功能和方法

Object类型的构造方法
1、Object():空参数构造方法,该构造方法内,第一行没有super(),因为Object没有父类

用途:① 创建Object类型的对象

​ ② 子类去使用,所有的子类都会直接的或者间接的访问到这个顶层父类的构造方法
在JAVA中所有的类都默认继承Object类

public class Demo01 {public static void main(String[] args) {//使用空参构造创建对象Object o1 = new Object();Person p = new Person();p.equals(o);//可以调用Object类中的方法,因为所有的类都是Object的子类,所以可以使用Object类中的方法Object o2 = new Person();//父类的引用指向子类对象//Object类型根据多态关系,可以接收任意类型的对象//所有的类都直接的或者间接的继承自Object类}
}
class Person{
}

1.toString

toString()方法在Object类里定义的,其返回值类型为String类型,返回类名和它的引用地址
1、public String toString() 返回对象的字符串表示,默认使用Object类的toString方法打印的对象, 在 idea中我们可以右键生成to String,或者alt+insert生成to String

2、对象返回一个地址值和全类名没有什么意义,所以建议将toString方法进行重写

  • 重写的原则:返回该对象中所有成员变量的值

3、重写之后使用该方法,或者打印一个对象名,都是打印的toString方法返回的结果,重写之后,打印的结果就是一个类名和属性值的集合

public class Demo02 {public static void main(String[] args) {Person p = new Person("小黑",20);System.out.println(p.toString());System.out.println(p);// System.out.println(p.getClass().getName() + "@" + Integer.toHexString(p.hashCode()));//一般自定义类中都要重写toString方法,如果不重写打印地址值没有意义//重写不需要自己手写,而是通过alt + insert 或者鼠标右键生成Person p2 = new Person("小明",222);System.out.println(p2);}
}
class Person{private String name;private int age;
//    如果不重写toString方法,默认调用的就是父类的方法功能    也就是object中的打印全类名+@+哈希值
//    @Override
//    public String toString() {
//        return "Person{" +
//                "name='" + name + '\'' +
//                ", 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;}public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}
}

2.equals

特点:是一个方法,并非运算符只适用于引用数据类型

1、public boolean equals(Object obj) 比较两个对象是否相同

2、比较的是Object类型,比较的是地址值,地址值是否相同

3、在实际生活中,比较地址值没有意义,因此在自定义类中都需要重写该方法

4、重写的原则:比较两个对象的属性值是否相同,如果属性值相同则认为是同一个对象

5、== 和 equals区别:比较的规则不同:

① ==比较任意数据类型,可以比较基本数据类型,也可以比较引用数据类型 比较的是地址值

② equals只能比较引用数据类型,equals方法在重写之前,比较是两个对象的地址值,重写之后比较的是对象的属性值

public class Demo03 {public static void main(String[] args) {Man m = new Man();System.out.println(m.hashCode());//hashCode方法 重写之前是根据地址值生成的哈希值Man m2 = new Man();      //重写之后,是根据属性值产生对应的哈希值//属性值相同,哈希值相同//属性值不同,哈希值大概率不同System.out.println(m2.hashCode());System.out.println(m == m2);System.out.println(m.equals(m2)); //equals方法重写之前比较的是地址值,重写之后比较的是属性值}
}
class Man{//以后在使用自定义类的时候 一般都要重写 toString 和equals方法private String name;private int age;@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Man man = (Man) o;return age == man.age && Objects.equals(name, man.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}@Overridepublic String toString() {return "Man{" +"name='" + name + '\'' +", 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;}public Man() {}public Man(String name, int age) {this.name = name;this.age = age;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA实现智能问答助手-GPT4o+向量数据库+FunctionCalling

本文基于上一篇文章GPT向量数据库Function calling垂直领域小助手进行了改进,对其中的循环请求GPT、FuctionCalling循环请求、MSGList缩容等进行了修改和优化,使的相关请求更加抽象和方便后续做延伸。文章中涉及业务属性的内容已经进行了过滤&#xff0c…

在Visutal Studio 2022中完成D3D12初始化

在Visutal Studio 2022中完成DirectX设备初始化 1 DirectX121.1 DirectX 简介1.2 DirectX SDK安装2 D3D12初始化2.1 创建Windwos桌面项目2.2 修改符合模式2.3 下载d3dx12.h文件2.4 创建一个异常类D3DException,定义抛出异常实例的宏ThrowIfFailed3 D3D12的初始化步骤3.1 初始化…

pytorch实现水果2分类(蓝莓,苹果)

1.数据集的路径,结构 dataset.py 目的: 输入:没有输入,路径是写死了的。 输出:返回的是一个对象,里面有self.data。self.data是一个列表,里面是(图片路径.jpg,标签&…

JMH325【剑侠情缘3】第2版80级橙武网游单机更稳定亲测视频安装教学更新整合收集各类修改教学补丁兴趣可以慢慢探索

资源介绍: 是否需要虚拟机:是 文件大小:压缩包约14G 支持系统:win10、win11 硬件需求:运行内存8G 4核及以上CPU独立显卡 下载方式:百度网盘 任务修复: 1,掌门任务&#xff08…

【Android组件】封装加载弹框

📖封装加载弹框 ✅1. 构造LoadingDialog✅2. 调用LoadingDialog 效果: ✅1. 构造LoadingDialog 构造LoadingDialog类涉及到设计模式中的建造者模式,进行链式调用,注重的是构建的过程,设置需要的属性。 步骤一&#x…

[数据结构] 归并排序快速排序 及非递归实现

()标题:[数据结构] 归并排序&&快速排序 及非递归实现 水墨不写bug (图片来源于网络) 目录 (一)快速排序 类比递归谋划非递归 快速排序的非递归实现: (二)归并排序 归…

Elasticsearch文档_id以数组方式返回

背景需求是只需要文档的_id字段,并且_id组装成一个数组。 在搜索请求中使用 script_fields 来整理 _id 为数组输出: POST goods_info/_search?size0 {"query": {"term": {"brand": {"value": "MGC"…

[240710] Workspaice:人机协作,共同创造 | 如何利用生成式 AI 自动化网络安全防御

目录 Workspaice:人机协作,共同创造如何利用生成式 AI 自动化网络安全防御 Workspaice:人机协作,共同创造 一、项目介绍 Workspaice 是一款本地运行的应用程序,旨在结合人类创造力和 AI 辅助功能。它不仅仅是一个代码…

明白这两大关键点,轻松脱单不再是难题!

很多未婚男女都渴望找到心仪的伴侣,建立稳定的情感关系,但往往在脱单的过程中跌跌撞撞。平时与同学、同事之间相处得很融洽,一旦遇到心仪的异性,情商直接掉线,难道情商也会选择性地发挥作用吗?其实&#xf…

什么牌子的开放式耳机好用?南卡、Cleer、小米、开石超值机型力荐!

​开放式耳机在如今社会中已经迅速成为大家购买耳机的新趋势,深受喜欢听歌和热爱运动的人群欢迎。当大家谈到佩戴的稳固性时,开放式耳机都会收到一致好评。对于热爱运动的人士而言,高品质的开放式耳机无疑是理想之选。特别是在近年来的一些骑…

AnimateLCM:高效生成连贯真实的视频

视频扩散模型因其能够生成连贯且高保真的视频而日益受到关注。然而,迭代去噪过程使得这类模型计算密集且耗时,限制了其应用范围。香港中文大学 MMLab、Avolution AI、上海人工智能实验室和商汤科技公司的研究团队提出了AnimateLCM,这是一种允…

电子电气架构 --- 关于DoIP的一些闲思 上

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

JavaDS —— 单链表 与 LinkedList

顺序表和链表区别 ArrayList : 底层使用连续的空间,可以随机访问某下标的元素,时间复杂度为O(1) 但是在插入和删除操作的时候,需要将该位置的后序元素整体往前或者向后移动,时间复杂度为O&…

扫描服务器端口(Python)

目录 1 背景2 代码2.1 单线程扫描2.2 多线程扫描 1 背景 如果只知道服务器的地址,不知道其提供服务端口号,可以通过扫描所有端口方式发现服务器提供哪些端口。下面使用Python编写脚本扫描服务器端口。 2 代码 服务器有效端口1-65535 2.1 单线程扫描 …

什么是智能制造?

科技的每一次飞跃都深刻改变着我们的生产生活方式。其中,智能制造作为工业4.0的核心概念,正引领着全球制造业向更加高效、灵活、智能的方向迈进。那么,究竟什么是智能制造?它如何重塑我们的工业版图,又将对未来社会产生…

TTT架构超越Transformer,ML模型替代RNN隐藏状态!

目录 01 算法原理 02 骨干架构 03 实验结果 一种崭新的大语言模型(LLM)架构有望取代当前主导 AI 领域的 Transformer,并在性能上超越 Mamba。 论文地址:https://arxiv.org/abs/2407.04620 本周一,关于 Test-Time Tr…

修复 Ubuntu 24.04 Dock 丢失应用程序图标

找出应用程序窗口的类名 首先,您需要启动应用程序窗口。然后,按 Alt F2 启动“运行 Command”对话框。当对话框打开时,输入 lg 并按 Enter 键。 在该窗口中,单击Windows按钮,然后找出目标应用程序窗口的类名称。 在/…

Jinja2模板引擎使用指南

文章目录 官网链接引言Jinja2 原理基础使用安装 Jinja2基本示例 高级使用宏(Macros)过滤器(Filters)继承(Inheritance) 结论 官网链接 Jinja2 官网 引言 Jinja2 是一个现代的、设计师友好的模板引擎&…

Flutter——最详细(Table)网格、表格组件使用教程

背景 用于展示表格组件,可指定线宽、列宽、文字方向等属性 属性作用columnWidths列的宽度defaultVerticalAlignment网格内部组件摆放方向border网格样式修改children表格里面的组件textDirection文本排序方向 import package:flutter/material.dart;class CustomTa…

公众号运营秘籍:8 大策略让你的粉丝翻倍!

在当今信息爆炸的时代,微信公众号的运营者们面临着前所未有的挑战:如何在这个充满竞争的红海中脱颖而出,吸引并留住粉丝?事实上,微信公众号的红利期并未完全过去,关键在于我们如何策略性地运营,…