Java --- equals()方法重写

引言:这个equals()方法重写在我这篇博客已经提到了,这里单独拿出来便于观看。

Java --- 字符串(就这一篇带你学习字符串的绝大多数内容)-CSDN博客


 equals():用这种方法比较两个用String类定义的对象,如果两个字符串具有相同的字符与长度,那么就会返回true。

用equals()方法注意:

1.不要使用该方法比较对象类型

2.不要使用该方法比较字符串常量。

3.不要使用该方法比较两个浮点型或双精度型的值,因为浮点数子啊计算机捏表示近似值,会导致结果不准确。

这里我定义一个People类和一个继承People类的Student类:

如果想比较两个类的值,就需要将equals()方法重写,也就是将该方法从Object类中继承并覆盖

public class People {
 
    private int id;
 
    private String name;
 
    public People(int id, String name) {
        this.id = id;
        this.name = name;
    }
}
public class Student extends People{
 
    private double score;
 
    public Student(int id, String name) {
        super(id, name);
    }
 
    public Student(int id, String name, double score) {
        super(id, name);
        this.score = score;
    }
}

 这里我就是为了举例子,在People重写一个equals()方法:

1.判断是否为同一对象

2.将不是People类对象筛除

3.强转想比较的对象,并比较其成员变量

public class People {
 
    private int id;
 
    private String name;
 
    public People(int id, String name) {
        this.id = id;
        this.name = name;
    }
 
    public boolean equals(Object obj){
        //1.同一对象判断
        if(obj == this)
            return true;
        //2.不是People类对象
        if(!(obj instanceof People))
            return false;
        //3.强转成People类对象,比较两个对象的id与name
        People p = (People)obj;
        return p.id == this.id && p.name.equals(this.name);
    }
}

 随后我把样例主方法放在People类内分析,来更深刻理解一下:

public class People {
    private int id;
    private String name;
    public boolean equals(Object obj){
        //同一对象判断
        if(obj == this)
            return true;
        //不是People类对象
        if(!(obj instanceof People))
            return false;
        //强转成People类对象
        People p = (People)obj;
        //比较两个对象的id与name
        return p.id == this.id && p.name.equals(this.name);
    }
    public People(int id, String name) {
        this.id = id;
        this.name = name;
    }
 
 
    public static void main(String[] args) {
        People p1 = new People(1,"zhangsan");
        System.out.println(p1.equals(p1));//p1与p1比较结果:true
 
        People p2 = new People(1,"zhangsan");
        System.out.println(p1.equals(p2));//p1与p2比较结果:true
 
        People p3 = new People(2,"lisi");
        System.out.println(p1.equals(p3));//p1与p3比较结果:false
 
        People p4 = new Student(1,"zhangsan",521);
        System.out.println(p1.equals(p4));//p1与p4比较结果:true
 
        People p5 = new Student(1,"zhangsan",125);
        System.out.println(p4.equals(p5));//p4与p5比较结果:true,但是注意因为咱们重写方法时候没有比较score的值以至于结果返回true
    }
}

OK本期就介绍到这里了,感谢收看,记得三连支持一下。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【c++】探究C++中的list:精彩的接口与仿真实现解密

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好,本篇文章来到list有关部分,这一部分函数与前面的类似,我们简单讲解,重难点在模拟实现时的迭代器有关实现 目录 1.List介绍2.接…

【博特激光】激光焊接机在塑料领域的应用

激光焊接机在塑料领域的应用已经越来越广泛,这主要得益于其独特的优势和特性。激光焊接机利用激光束产生高能量、高温的条件,将塑料材料熔化并融合在一起,实现焊接的目的。 在塑料领域,激光焊接机主要用于各种塑料制品的焊接&…

【项目分享】用 Python 写一个桌面倒计日程序!

事情是这样的,我们班主任想委托我做一个程序,能显示还有几天考试。我立即理解了这个意思,接下了这个项目。 话不多说,来看看这个项目吧—— 项目简介 仓库地址:https://gitee.com/yaoqx/desktop-countdown-day 这是 …

C语言入门课程学习笔记-6

C语言入门课程学习笔记-6 第27课 - 字符数组与字符串(上)第28课 - 字符数组与字符串(下)第29课 - 数组专题练习(上)第30课 - 数组专题练习(下) 本文学习自狄泰软件学院 唐佐林老师的…

matplotlib 安装失败:Failed building wheel for matplotlib 解决方案

Python | Failed building wheel for matplotlib 朋友遇到 python 安装 matplotlib 时的问题,笔者帮忙远程调试(踩了不少坑)。网上的解决方案有很多无效,以此来记录以下个人解决方案。 在使用指令 pip install matplotlib出现如下报错: “…

移远通信再推系列高性能卫星、5G、GNSS及三合一组合天线

4月23日,全球领先的物联网整体解决方案供应商移远通信正式宣布,再次推出多款高性能天线产品,以进一步满足物联网市场对高品质天线产品的需求。 其中包括卫星天线YETN001L1A、三合一组合天线YEMA300QXA和YEMN302Q1A,外部5G天线YECN…

Unity对应的c#版本

本文主要是记录一下unity已经开始兼容c#的版本和.net版本,以便更好的利用c#的特性。 c#和.net对应情况 微软已经将.net开发到.net 9了,但是unity的迭代速度远没有c#迭代速度快,已知unity最新的LTS版本unity2023已经兼容了c#9 可以在unity手册…

生成数据能否帮助模型训练?

能否利用生成模型生成的假数据来辅助学习? 到底是可以左脚踩右脚(bootsrap)地实现 weak-to-strong 的不断提升,还是像鸡生蛋、蛋生鸡一样,只不过是徒劳无功? 论文题目: Do Generated Data Alw…

集成学习算法学习笔记

一、集成学习的基本思想 三个臭皮匠顶一个诸葛亮 集成学习会考虑多个评估器的建模结果,汇总后得到一个综合的结果,以此来获取比单个模型更好的回归或分类表现。 很多独立的机器学习算法:决策树、神经网络、支持向量机 集成学习构建了一组基…

如何在iPhone/iPad上恢复已删除的微信消息?

“我从我的iPhone上删除了一些微信消息。我想知道我是否可以从我的iPhone上恢复已删除的微信消息。我尝试了一些方法,但没有一个可以恢复我丢失的消息,只能恢复我的短信。谁可以给我有什么建议吗?” ——蒂娜 如何在iPhone或iPad上恢复已删除…

3122.使矩阵满足条件的最少操作次数

周赛第三题,知道要用动态规划,但是不知道怎么回到子问题 显然根据题意我们需要让每一列都相同,但是相邻列不能选择同一种数字,观察到数据nums[i]介于0-9,我们就以此为突破口. 首先我们用count[n][10], count[i][j]记录第i1列值为j的元素个数,转移方程如下: dfs(i,pre) max(dfs…

根据标签最大层面ROI提取原始图像区域

今天要实现的任务是提取肿瘤的感兴趣区域。 有两个文件,一个是nii的原始图像文件,一个是nii的标签文件。 我们要实现的是:在标签文件上选出最大层面,然后把最大层面的ROI映射到原始图像区域,在原始图像上提裁剪出ROI…

6.模板初阶

目录 1.泛型编程 2. 函数模板 2.1 函数模板概念 2.2函数模板格式 2.3 模板的实现 2.4函数模板的原理 2.5 函数模板的实例化 3.类模板 1.泛型编程 我们如何实现一个 交换函数呢? 使用函数重载虽然可以实现,但是有一下几个不好的地方: …

(学习日记)2024.04.26:UCOSIII第五十节:User文件夹函数概览(uC-CPU文件夹)

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

docker容器技术篇:集群管理实战mesos+zookeeper+marathon(二)

docker集群管理实战mesoszookeepermarathon(二) 一 实验环境 操作系统:centos7.9 二 基础环境配置以及安装mesos 安装过程请点击下面的链接查看: 容器集群管理实战mesoszookeepermarathon(一) 三 安装…

WPF 资源基础

动态资源/静态资源 UI代码 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/ex…

leetcode_37.解数独

37. 解数独 题目描述&#xff1a;编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考…

我教你如何可翻页电子画册

​电子画册是一种创新的方式&#xff0c;可以将传统的纸质画册转化为数字化的形式&#xff0c;并且具备翻页的功能。它不仅可以提供更好的阅读体验&#xff0c;还可以方便地分享给他人。 1.选择制作工具&#xff1a; 有许多在线平台和软件可以帮助你制作电子画册&#xff0c;比…

海康大华摄像头rtsp在网页中播放

一.项目说明 摄像头视频推流实现 支持rtsp&#xff1b;rtmp; 摄像头在浏览器中播放实现 内包含资源和对于的部署方案 资料中有详细部署资料和对于的api接口&#xff0c;支持二次开发。 二.项目实现效果 三.下载地址 下载地址&#xff1a;http://www.gxcode.top/code

【春 联---turtle海龟画图】

春联 又称"春贴"、"门对"、"对联"&#xff0c;是过年时所贴的红色喜庆元素"年红"中一个种类。它以对仗工整、简洁箱巧的文字描绘美好形象&#xff0c;抒发美好愿 望&#xff0c;是中国特有的文学形式&#xff0c;是华人们过年 的重要习…
最新文章