深入理解== 和 equals 的区别

深入理解== 和 equals 的本质区别

  • 简介
    • 区别:
          • 图解:
    • 注意点:
    • 源码分析:
    • 总结
    • 分享一波:程序员赚外快-必看的巅峰干货

简介

初学者常常被"= =“和‘equals ’所折磨,为什么,因为他们的大概意思相同,都是比较两个对象是否相等,而又不搞不清他们的具体比较两个对象相等的原理是什么,所以经常搞混淆,接下来我们就去仔细的剖析他们,真正理解什么时候用”= =",什么时候用equals
先统一看一下他们两个的区别,知道区别后再仔细研究他们的原理

区别:

==:它存在两个情况
1.当他比较两个基本类型时,判断的时两个基本类型的类型和值是否相同
2.当他比较两个引用类型是,判断的时两个引用类型的类型和地址是否相同

图解:

equels:最基本的equels方法其实就是= =,也就是说,最基本的equels也存在两个情况
1.当他比较两个基本类型时,判断的时两个基本类型的类型和值是否相同
2.当他比较两个引用类型是,判断的时两个引用类型的类型和地址是否相同
也就是说最基本的equels方法和= =完全一样

注意点:

请看清楚,我这里说的最基本的equels方法,什么是最基本的equels方法?

在这里我们要知道一个知识点:equels方法是Object类的方法,我们再代码中写的所有Class类都继承了Object的equels方法,所以我称Object类的equels方法是最基本的equels方法

源码分析:

我们再来看一下Object类的equels方法的源码
在这里插入图片描述
这下明白了吧!Object类的equels方法是直接点用了‘= =’,所以一开始我说:最基本的equels方法和==完全一样
那我们知道,继承的一大特点就是实现了java语言的多样性,而方法重写则是java语言多样性的实现原理之一。问题的重要点就在这里,继承Object类的子类对equels的重写导致了equels和= =的不同。具体哪里不同,这就要看怎么重写了。
给大家看一下一个重写了的,比如String,看图:
在这里插入图片描述
String的重写equals方法流程是这样的
第一步:判断引用地址是否相等,引用地址相等说明他们是同一个对象,说明值肯定相同,返回true
第二部:判断对象类型是否相同,类型不同,直接返回false
第三步:循环两个对象的字符,一一对比是否相同,都相同说明值相同,返回true
所以String重写的equals方法的总目的就是判断两个对象的值是否相同。

总结

所以总结下来就是说,==和我们日常用的equals方法哪里不一样,我们要去看他们怎么重写的equals方法,看完之后才能知道equals具体是怎么比较的。

分享一波:程序员赚外快-必看的巅峰干货

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

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

相关文章

rsem比对_RSEM方法比对和表达量计算

分析模块,封装了Trinity程序包中的“align_and_estimate_abundance.pl”脚本,进行原始数据与转录本序列的比对和表达量计算。其中,核心程序为,Bowtie或Bowtie2进行原始数据与转录本序列的比对,RSEM根据比对结果进行表达…

java sleep和wait区别

为什么80%的码农都做不了架构师?>>> 关于sleep和wait区别解析: sleep只是释放CPU资源,并不释放资源锁对象,wait是会释放掉资源锁对象。 比如,有个锁对象object,线程1和线程2都会锁住object对象…

u8转完看不到菜单_web网页有错误,无法看到操作菜单-用友U8

文章摘要:本文提供在用友U8V8.51erp软件财务会计管理的WEB财务模块中客户在使用WEB功能时,没有使用默认的设置,是将WEB功能设置在自己的网站上面,访问WEB功能没有问题,界面出来了,输入用户名、密码、选择帐…

.Net Core 项目引用本地类库方式(二)

上篇文章有详细的介绍.Net Core 项目中引用本地类库通过打包,然后Nugety引用方式,这里再介绍一种引用包的方式 转载于:https://www.cnblogs.com/wangshitou/p/10283800.html

深入理解equals和hashCode关系和区别

深入理解equals和hashCode关系和区别直入主题:区别:1.他们判断对象相同的方式不一样:2.他们判断对象是否相等的准确率不一样:改写equals时总是要改写hashcode分享一波:程序员赚外快-必看的巅峰干货为什么要说equals和hashCode这两…

lol韩服游戏内设置_韩服LOL进去了还不能玩?教你如何玩韩服!

领取免费韩服LOL安全号,百度搜索韩服LOL微博关注即可!上图错误为常识性错误,LOL韩服游戏的安装文件路径有中文所导致的错误 解决方法:将安装路径里的中文改成英文即可 举例 包含中文汉字的文件夹都是错误的 Program FilesLOL韩服 …

Jdk 和 jre 的 关系和区别

Jdk 和 jre 的 关系和区别 区别: JDK:是Java Development Kit 的简称–>翻译过来就是:Java 开发工具包。是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。 JRE:是Java Runtime Environm…

OpenCV-Python入门教程7-PyQt编写GUI界面

前面一直都是使用命令行运行代码,不够人性化。这篇用Python编写一个GUI界面,使用PyQt5编写图像处理程序。包括:打开、关闭摄像头,捕获图片,读取本地图片,灰度化和Otsu自动阈值分割的功能。 使用Qt Designer…

spark 广播变量大数据_大数据处理 | Spark集群搭建及基本使用

点击蓝字关注我前面用了一篇文章详细的介绍了集群HDFS文件系统的搭建,HDFS文件系统只是一个用于存储数据的系统,它主要是用来服务于大数据计算框架,例如MapReduce、Spark,本文就接着上一篇文章来详细介绍一下Spark集群的搭建及Spa…

如何将本地项目上传到gitee

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

oracle dg 备库未设置convert参数导致ORA-01111,ORA-01110

2019独角兽企业重金招聘Python工程师标准>>> 查看trace 文件: MRP0: Background Managed Standby Recovery process started (amls) started logmerger process Sun Jan 20 07:55:53 2019 Managed Standby Recovery starting Real Time Apply MRP0: Back…

git回退历史版本无法上传_Git系列教程(二):版本库中添加文件、版本回退

Git系列教程(一):简介、安装、配置我们学习了分布式和版本控制系统的概念、Git具有的8个功能以及如何在Windows上安装Git、进行相关配置并创建版本库。Git版本库中添加文件Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。我们编写一个readme.txt文…

nginx反向代理配置如何去除前缀

使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法: 方法一:加"/"** server {l…

「作文素材详解」写作必知篇:语言优美不是作文第一要求

语言优美不是作文第一要求“教孩子写作文,老师家长应该先提升自己。”“语言优美不是作文的第一要求。”“如果教孩子写漂亮的违心话,会害了他一辈子。”日前,著名作家肖复兴来到体育东路小学,与广州的一线语文教师交流&#xff0…

华为安装gsm框架_华为nova5怎么下载安装谷歌服务助手,安装GMS框架教程

看到不少的华为nova5用户喜欢这个谷歌服务助手,也就是想安装这个GMS框架,可是一直不知道如何下载安装,这个谷歌服务框架是可以在系统软件里面可以删除的一个APK程序,但现在有很多的软件和游戏需要谷歌服务的支持,那咱们…

VMware安装虚拟机并使用NAT模式连接网络

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

PHPStudy下Apache SSL证书安装教程

一、安装SSL证书的环境 Apache安装目录:E:phpStudyPHPTutorialApache 以上为windows下测试SSL证书安装的目录,具体目录请根据自己的实际环境! 二、获取SSL证书 成功在沃通申请SSL证书后,会得到一个压缩包文件,解压后得到四个文件&…

laravel 集成采集_新版2020 Laravel采集网站程序

环境:php5.6数据库:mysql5.5集成环境软件:护卫神apache这套程序是520.ag 的网站很早的程序了是去年还是前年 应该是前年免费采集网站 但是经常挂 其实他网站挂和服务器没有多大关系 是程序没有作好优化这套程序可以大家做起来 自己用就可以了 放出去免费采集的话 网站容易死程…

详解模板方法设计模式

分享一波:程序员赚外快-必看的巅峰干货 概念 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的重复代码全部在父类里面,不同业务的,使用抽象方法,抽取给子类进…