Object方法重写

这篇文章大家随意看看就好,只是一点理解的东西,当然你也可以认真调查。
我们需要知道Obecj是java中的一个类,是所有类的父类,即超类。对,超级赛亚人的那个超。
image.png
我们需要关注其中的equals、tostring这两个方法。
例如:

public class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}

在这个例子的代码里,我们需要对tostring方法进行重写:

// @Override
// public String toString() {
//     return "姓名:" + name + " 年龄:" + age;
// }

这是我们大概的想法,那我们现在润色一下再实际写出来:

@Override
public String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';

那么,现在toString的功能就很明显了:将对象变成字符串输出。
我们可以采用Object的默认行为,也可以自己重写。
但如果想进行一些判定,就该重写equals这个类:
equals方法是用来比较两个对象是否相等的方法。在Object类中,equals方法的默认实现是比较两个对象的引用是否相同,即判断两个对象是否是同一个对象(内存地址是否相同)。但是,通常情况下我们需要重写equals方法来根据对象的内容进行比较,而不仅仅是比较对象的引用。
重写equals方法的目的是为了根据对象的特定属性进行比较,如果两个对象的属性值相同,则认为这两个对象是相等的。
在Java中,equals()方法是Object类中的一个方法,因此所有的Java类都继承了这个方法。要重写equals()方法,需要根据具体的业务逻辑来确定两个对象是否相等,比如比较对象的某些属性值是否相同。
现在我们就该想,在这个学生的例子中,要判定些什么:

  • 地址相同
  • 学生类的学号相等

我们拆开来看:

// 对象1.equals(对象2)
@Override
public boolean equals(Object obj) {
// 前置类型转换
Student student = (Student) obj;
if (this == obj) return true; // 如果对象1和对象2的地址一样,一定是同一个对象
// getClass(对象是根据那个类构造出来的)
// 1. 如果obj是一个null,没必要往后走
// 2. 如果对象1和对象2不是同一个类构造出来的(人类 和 狗类做对比)
if (obj == null || getClass() != obj.getClass()) return false;

或者自由发挥:

@Override
public boolean equals(Object obj){
Student student = (Student) obj;
// 1. 只要年龄相等就是一个人
if(this.age == student.age && this.name.equals(student.name)) {return  true;
} else {return  false;
}
}

好了,各位看官,请给一个一键三连以表支持吧!!!!!
image.png

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

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

相关文章

电脑管理软件是什么?电脑管理软件能做什么?

电脑管理软件是一种专门设计用于管理和优化计算机系统的软件工具。它涵盖了多个方面,从系统维护、资源分配到安全防护,都有着广泛的应用。以下是对电脑管理软件及其功能的详细解析: 一、电脑管理软件的定义 电脑管理软件是一种管理类型的软…

宿州降本 提质 增效 数据采集监控平台提高生产自动化水平

在当今竞争激烈的市场环境中,企业追求降本、提质、增效已成为发展的关键。而我们的[数据采集监控平台名称]数据采集监控平台,正是助力企业实现这一目标的强大工具。 LP-SCADA数据采集监控平台是工业4.0中主要的数据采集系统之一,主要针对产线…

SimLab 流体网格建模工具详解 Part2: Mesh

SimLab的建模功能 SimLab中和流体网格建模相关的功能主要集成在 Geometry 和 Mesh 两个标签中。在上期文章中,我们详细介绍了Geometry标签中的内容,本期文章我们将分享继续分享 Mesh 标签的内容,一起来看看吧。 Mesh 标签 标签下的工具生成网…

南方CASS:测绘工作者的得力助手

初识南方CASS 南方CASS,这款软件在我的工作和生活中扮演了不可或缺的角色。作为一名长期的使用者,我深感它的功能之强大与便捷。今天,我愿以季羡林先生的口吻,带大家走进南方CASS的世界,分享我与它的点滴故事。 功能…

深入解析【C++ list 容器】:高效数据管理的秘密武器

目录 1. list 的介绍及使用 1.1 list 的介绍 知识点: 小李的理解: 1.2 list 的使用 1.2.1 list 的构造 知识点: 小李的理解: 代码示例: 1.2.2 list 迭代器的使用 知识点: 小李的理解&#xff1…

基于STM32的气压检测报警proteus仿真设计(仿真+程序+设计报告+讲解视频)

基于STM32的气压检测报警proteus仿真设计 1.主要功能2.仿真3. 程序4. 设计报告5. 资料清单&下载链接资料下载链接: 基于STM32的气压检测报警proteus仿真设计(仿真程序设计报告讲解视频) 仿真图proteus 8.9 程序编译器:keil 5 编程语言…

【Linux】多线程_1

文章目录 九、多线程1. 线程概念2. 线程的控制 未完待续 九、多线程 1. 线程概念 我们知道:进程 内核数据结构 进程代码和数据 。那什么是线程呢?线程是进程内部的一个执行分支。一个进程内部可以有多个执行流(内核数据结构)&…

如何用Vue3和Plotly.js创建交互式平行坐标图

本文由ScriptEcho平台提供技术支持 项目地址:传送门 Vue.js 中使用 Plotly.js 创建平行坐标图 应用场景介绍 平行坐标图是一种可视化高维数据集的强大技术。它可以帮助我们探索不同维度之间的关系,并识别模式和异常值。在 Vue.js 应用程序中&#xf…

telnet在windows和linux上的使用方法

telnet在windows上使用 ‘telnet’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 windows上有自带的telnet工具的,这只是没有安装添加进来而已。 处理 方法: 打开控制面板-点击程序与功能 进到程序与功能界面,点击启用或…

S32V234平台开发(一)快速使用

快速使用 准备供电复位选择串口通信启动选择显示登陆系统 准备供电 s32v234可以使用两种电源供电 一种是左边电源端子,一种是右边电源适配器(12V 3A) 注意:不要同时使用两种电源同时供电 复位选择 Pressing POR RESET pulls active low EXT_POR signal on S32V2…

deepstream段错误

😐 错误: 探针中由于使用了pyds.get_nvds_buf_surface(hash(gst_buffer), frame_meta.batch_id)导致的段错误(segmentation fault)。 解决方式:

职场中的3个误区,你踩坑了吗?

1、个人发展比工资待遇更重要 这句话也不能说是完全错的,但是你要明白能给你提供发展空间的公司,待遇也不会差到哪里去,而且随着你个人能力的提升,发展也会越来越好,你的待遇也自然水涨船高,这个道理其实大…

为什么选择虚拟艺术设计展览?艺术家应知的五个关键好处

随着技术的进步,虚拟艺术设计展览成为了展示艺术作品的重要途径。它不仅为艺术家们提供了新的展示平台,还打破了传统展览的局限。 1、扩大观众范围:打破地理限制 虚拟艺术设计展览能够打破地理限制,使得全球观众可以随时随地访问…

go GMP 模型,为什么要有 P?

GM 模型 在 Go1.1 之前 Go 的调度模型其实就是 GM 模型,也就是没有 P。 static void schedule(G *gp) {...schedlock();if(gp ! nil) {...switch(gp->status){case Grunnable:case Gdead:// Shouldnt have been running!runtimethrow("bad gp->status …

春秋杯 snack入土为安的第二天

不嘻嘻,签到题做了两天,先用pyinstxtractor.py(找最新版本。。红温)把exe转化为pyc,用在线反编译pycdc来反编译,最后的key在一个文件夹里key.pyc切记用python3.3版本(红温)。 # 假设…

同步时钟系统支持多种校时方式

在当今数字化、信息化高速发展的时代,时间的准确性和同步性变得至关重要。无论是金融交易、通信网络、交通运输,还是工业生产、科学研究等领域,都离不开一个精确且同步的时钟系统。而同步时钟系统之所以能够在众多领域发挥关键作用&#xff0…

手把手和你一起从0搭建一个vite+Vue3+element-plus的后台管理系统!

首选需要node环境。你可以参考:如何创建一个vue的新项目,用命令行的方式创建.下载node.js-CSDN博客 所需要的内容官网: https://vitejs.dev/ 安装 | Element Plus Vue Router | Vue.js 的官方路由 axios中文网|axios API 中文文档 | axio…

【Linux进阶】文件系统2——MBR和GPT

1.磁盘的分区 因为如果你的磁盘被划分成两个分区,那么每个分区的设备文件名是什么? 在了解这个问题之前,我们先来复习一下磁盘的组成,因为现今磁盘的划分与它物理的组成很有关系。 我们谈过磁盘主要由碟片、机械手臂、磁头与主轴马…

1125 子串与子列

solution #include<iostream> #include<string> using namespace std; int main(){int l, r, len 10000, n;string s, p;cin >> s >> p;for(int i 0; i < s.size() - p.size(); i){//剩下子串长度不足p.siez()时&#xff0c;不可能再出现子列pif…

项目收获总结--MyBatis的知识收获

一、概述 最近几天公司项目开发上线完成&#xff0c;做个收获总结吧~ 今天记录MyBatis的收获和提升。 二、获取自动生成的(主)键值 insert 方法总是返回一个 int 值 &#xff0c;这个值代表的是插入的行数。若表的主键id采用自增长策略&#xff0c;自动生成的键值在 insert…