Java常用API---Object类

Object类概述

概述

Object类是所有类的父类,任何一个类的对象(包括数组),都可以调用Object类的方法

目标:

掌握Object类的常用方法

常用方法:
boolean equals(Object obj):判断当前对象是否与参数对象"相等"
String toString():返回该对象的字符串表示形式
int hashCode():返回对象在堆内存的十进制地址值

需求:创建两个Student对象,利用Object提供的equals方法比较两个对象是否"相等"

//学生类
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;}
Student stu1 = new Student("张三", 23);
Student stu2 = new Student("张三", 23);
//Student虽然没有声明父类,但是它的父类就是Object,可以使用equals方法
boolean result = stu1.equals(stu2);通过底层代码分析,Object的equals方法衡量两个对象是否相等的条件,是比较对象地址值!
System.out.println(result);       
//打印stu1对象
System.out.println(stu1);//需求:尝试打印stu1不看到对象地址值,看到对象属性值!//打印语句的底层,获取的打印内容是通过调用对象的toString方法得到的,此时Student自己没有,是调用的Object的toString方法
//场景:当父类方法不满足子类需求,重写父类Object的toString方法

比较stu1和stu2对象是否相等,但是衡量的条件得根据属性值来比较!
场景:当父类方法不能满足子类要求时,子类可以重写父类的方法
思路:让Student类重写Object父类的equals方法,在重写方法中根据对象属性值比较即可

@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic 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方法的作用是什么?
    返回对象的十进制地址值

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

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

相关文章

Linux时间查看和设置

查看时间 date 命令,输出 Sun Jul 14 07:23:03 PM CST 2024timedatectl 命令,输出 Local time: Sun 2024-07-14 10:30:00 CSTUniversal time: Sun 2024-07-14 02:30:00 UTCRTC time: Sun 2024-07-14 02:30:00Time zone: Asia/Shanghai (CST, 0800) Sys…

汇编学习基础知识【记录】

前言 又是快乐的学习汇编的一天,时间如白驹过隙,抓紧时间,在学习能力最好的年纪多学习一些知识,朝着美好生活而奋斗!哈哈哈 参考文章: https://blog.csdn.net/Z_H_Z_0/article/details/106574292 知识补…

给 「大模型初学者」 的 LLaMA 3 核心技术剖析

编者按: 本文旨在带领读者深入了解 LLaMA 3 的核心技术 —— 使用 RMSNorm 进行预归一化、SwiGLU 激活函数、旋转编码(RoPE)和字节对编码(BPE)算法。RMSNorm 技术让模型能够识别文本中的重点,SwiGLU 激活函…

现在有哪些微服务解决方案?

Dubbo:是一个轻量级的Java微服务框架,最初由阿里巴巴在2011年开源。它提供了服务注册与发现、负载均衡、容错、分布式调用等。Dubbo更多的被认为是一种高性能的RPC框架(远程过程调用),一些服务治理功能依赖第三方组件完…

以一个springboot项目中创建用户会话的业务背景来说明threadlocal的用法

在Spring Boot项目中,ThreadLocal 是一个非常有用的工具,特别是在处理用户会话信息时。ThreadLocal 允许你在同一个线程中存储和访问变量,而不会与其他线程的变量发生冲突。这对于存储用户会话信息、请求上下文等非常有用。 以下是一个示例&…

第一部分:C++入门

目录 前言 1、C关键字(C98) 2、命名空间 2.1、命名空间定义 2.2、命名空间的使用 3、C输入&输出 4、缺省参数 4.1、缺省参数的概念 4.2、缺省参数的分类 5、函数重载 5.1、函数重载的概念 5.2、C支持函数重载的原理 6、引用 6.1、引用的概念 6.2、引用特性 …

Unity与Unreal Engine:AR建筑应用开发之选

在AR技术的浪潮中,建筑行业正迎来一场技术革新。对于希望为建筑工人开发AR应用的创业者来说,选择正确的开发平台至关重要。本文将基于社区讨论,深入分析Unity与Unreal Engine两款引擎在AR施工应用中的优劣,为开发者提供决策参考。…

深圳晶彩智能JC3636W518C开箱实现电脑副屏功能

深圳晶彩智能发布了JC3636W518C 这是一款中国制造的,铝合金外壳,价格非常震撼的开发板。原创是billbill的up播主萨纳兰的黄昏设计的ESP32太极小派,由深圳晶彩智能批量生产。 该款 LCD 模块采用 ESP32-S3R8 芯片作为主控,该主控是双核 MCU&…

LightDM和SDDM显示管理器学习小知识

LightDM和SDDM是两种不同的显示管理器(Display Manager),它们可以与多种Linux桌面环境配合使用。以下是它们常见的对应关系: ### LightDM LightDM是一个跨桌面的显示管理器,它允许用户选择不同的桌面环境。以下是一些…

C++入门基础篇(2)

欢迎大家的来到小鸥的博客&#xff0c;今天我们继续C基础的第二篇吧&#xff01; 这也是入门基础篇的最后一篇wo~ 目录 1.引用 引用的概念 引用的特性及使用 const常引用 指针和引用的关系 2.inline内联函数 定义 相关特性及使用​ 3.nullptr >>后记<< …

摩尔投票算法

文章目录 什么是摩尔投票算法算法思想 相关例题摩尔投票法的扩展题目解题思路代码奉上 什么是摩尔投票算法 摩尔投票法&#xff08;Boyer-Moore Majority Vote Algorithm&#xff09;是一种时间复杂度 为O(n),空间复杂度为O(1)的方法&#xff0c;它多数被用来寻找众数&#xf…

深入理解Symfony框架中的数据验证机制

Symfony是一个高度灵活的PHP Web应用框架&#xff0c;它提供了一整套工具和实践来帮助开发者构建复杂的Web应用。数据验证是确保应用数据完整性和安全性的关键环节。在Symfony中&#xff0c;数据验证是通过一系列的组件和方法来实现的&#xff0c;这些组件和方法遵循DRY&#x…

Manim的代码练习02:在manim中Dot ,Arrow和NumberPlane对象的使用

Dot&#xff1a;指代点对象或者表示点的符号。Arrow&#xff1a;指代箭头对象&#xff0c;包括直线上的箭头或者向量箭头等。NumberPlane&#xff1a;指代数轴平面对象&#xff0c;在Manim中用来创建包含坐标轴的数学坐标系平面。Text&#xff1a;指代文本对象&#xff0c;用来…

Linux系列--命令详解

目录 一、Linux资源管理方式 二、查询类型命令详解 三、文件管理类型命令详解 四、文件压缩与解压 五、文件编辑 六、系统命令 七、文件内容查看命令 一、Linux资源管理方式 linux操作系统采用一个文档树来组织所有的资源。这棵树的根目录的名字叫做&#xff1a;//…

使用 HttpServlet 接收网页的 post/get 请求

前期工作&#xff1a;部署好 idea 和 一个 web 项目 idea(2021),tomcat(9) ->创建一个空的项目 -> 新建一个空的模块 -> 右键单击模块 选择 Add..Fra.. Sup.. -> 勾选Web App...后点击OK -> 点击 file - Project Struc... -> 选择刚刚的模块 -> 点…

Web 性能入门指南-2.0 核心网络性能指标LCP、INP、CLS

Largest Contentful Paint、Interaction to Next Paint 和 Cumulative Layout Shift 是前端性能优化和用户体验评估中的重要指标&#xff0c;以下是它们的英文缩写及中文含义&#xff1a; 最大内容绘制 (LCP) 英文缩写&#xff1a;Largest Contentful Paint&#xff0c;LCP …

Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git)

目录 Linux软件包管理器 - yum Linux下安装软件的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 vim的简单配置 Linux编译器 - gc…

IOSUI自动化之mobiledevice

mobiledevice 要求 MAC OS X 10.6 以上版本 通过USB连接你的iPhone设备 需要安装mobiledevice 安装app需要提前安装开发者证书 安装 brew update brew install mobiledevice 支持的能力 安装卸载app 连接电脑的iphone设备列表 mobiledevice list_devices 获取设备属性 mobiled…

C 语言指针进阶

1.0 指针的定义 指针是内存中一个最小单元的编号&#xff08;内存单元的编号称之为地址【地址就是指针指针就是地址】&#xff09;指针通常是用来存放内存地址的一个变量。本质上指针就是地址&#xff1a;口语上说的指针起始是指针变量&#xff0c;指针变量就是一个变量&#…

MySQL覆盖索引和索引跳跃扫描

最近在深入学习MySQL&#xff0c;在学习最左匹配原则的时候&#xff0c;遇到了一个有意思的事情。请听我细细道来。 我的MySQL版本为8.0.32 可以通过 show variables like version; 查看使用的版本。 准备工作&#xff1a; 先建表&#xff0c;SQL语句如下&#xff1a; c…