理一理java与C#中的equals方法和“==”来进行相等判断

前言:相信网上类似的博客很多了,但两种语言的这个对比着来理解的很少,最近在做C#项目时产生了这个想法,今天写这篇博客是为了帮助自己不会忘记,也希望能帮助到看到这篇文章的你。谈到对比,那肯定这两种语言中的equals和==有点儿不一样,嘿嘿,怎么个不一样,我们下面来看看。


一、java中的equals和==

1.你若不对“==”运算符进行重操作,那进行的就是栈空间值类型的比较,如:

                                                                   图(1)

 

                                     图(2)

所以,也就是 2和3的比较,不相等返回false。

对应的,你若用“==”运算符来比较引用类型的变量会如何呢?

                                                                       图(3)

答案是false,原因如下图:

                                                           图(4)

也即car1这个变量的值是地址1,car2这个变量的值是地址2。两个的值(堆空间的地址)是不相等,下图这样也就能明白了。

                                                                           图(5)

2.我们知道,equals方法可以用来比较两个引用类型的内容是否相等,但这是对于重写了object类的equals方法而言的,

如String、Date以及Double、Integer等类而言的。

对于自定义类,如上面的Car,若直接使用equals方法来判断其内容是否相等就会得到false

                                                                        图(6)

原因是object类equals方法内部执行的是“==”判断,源码如下图

                                                       图(7)

图(7)来源于https://www.cnblogs.com/dolphin0520/p/3592500.html

因此,我们借助于String对Car的equals方法进行简单重写后判断

                                                                                                       图(8)

这样就能判断两个引用类型的内容是否一样了。

二、C#中的equals和==

我们都知道,C#出现在java之后,里面的许多特性都和java一样,就如本专题,所有的类都继承自object基类,object类中都有equals方法,C#中的equals方法是虚方法即virtual修饰的,这就清楚地表明其子类在需要这个方法时重写一下,java和C#中的“==”运算符(你若不进行重操作)都是比较的值类型,这里不再作图描述。

需要说明的是,C#中的String方法既重写了“==”运算符,又重写了equals方法,两个都能对引用内容进行比较。

如下图:

                                                                                     图(9)

原因在于String类在进行“==”比较时,其运算符内部调用的是equals方法,如下图:

                                         图(10)

图(10)来源于https://www.cnblogs.com/chen0720/p/3209398.html

对java和C#的String类进行总结:

1)java中的String 类只对equals方法进行了重写,让其能够对引用变量的内容进行比较。

2)C#中的String类对equals方法和“==”运算符都进行了重写,equals方法重写了之后和java一样,“==”运算符重写调用了equals方法。

以上就是两种语言的equals和“==”运算符在做比较时的原理以及在用的最多的String中的使用。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值