Java培训教程:”==“和 equals 方法究竟有什么区别?
在学习java技术过程中,我们会接触到一些变量值的相关知识,本期小编为大家介绍的教程就是关于”==“和 equals 方法究竟有什么区别?来看看下面的详细介绍。
Java培训教程:”==“和 equals 方法究竟有什么区别?
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如 Objet obj = new Object();变量 obj 是一个内存,newObject()是另一个内存,此时,变量 obj 所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。
equals 方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:
String a=new String("foo");
String b=new String("foo");
两条 new 语句创建了两个对象,然后用 a,b 这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即 a 和 b 中存储的数值是不相同的,所以,表达式 a==b 将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回 true。
在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input =…;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项
目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用 equals 方法。
如果一个类没有自己定义 equals 方法,那么它将继承 Object 类的 equals 方法,Object 类的 equals 方法的实现代码如下:
boolean equals(Object o){
return this==o;
}
这说明,如果一个类没有自己定义 equals 方法,它默认的 equals方法(从 Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用 equals 和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回 false。
如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖 equals 方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。
相关文章:

转载-SQL Server各种导入导出数据方式的比较
注:本文转载自 http://blog.csdn.net/nokiaguy/article/details/4684822 当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验、净化和转换时,将会面临很大的挑战。…

【直播】李祖贤:集成学习答疑直播之八-- 集成知识点回顾与补充
集成学习答疑直播之八-- 集成知识点回顾与补充 集成学习是首个横跨3个周期的长期组队学习,在第25期组队学习中进行到“第三期-模型融合与数据实战”阶段。组队学习期间,课程设计者每周针对学习任务的重难点和学员的学习情况进行集中直播答疑,…

Python培训完可以找什么工作
近几年学习Python技术的人越来越多,对于Python这个行业很多人都是比较看好的,事实也确实如此,那么具体Python培训完可以找什么工作呢?现在学习Python好就业吗?来看看下面的详细介绍吧。 Python培训完可以找什么工作?Python是一种面向对象的…

上传图片时出现Request 对象 错误 'ASP 0104 80004005'
原因.IIs默认的上传大小为200K,当上传的文件超过此大小.则会出现此错误 解决办法: 1.关闭IIS Admin Service服务 2.更改C:\WINDOWS\system32\inetsrv目录下的MetaBase.xml 文件,将第601行的AspMaxRequestEntityAllowed204800.更改为AspMaxRequestEntityAllowed5120000(5120000是…

Datawhale组队学习周报(第013周)
本周(05月10日~05月16日),第 25 期组队学习正在如火如荼的进行中。本期组队学习,一共有 3 门开源课程,共组建了 3 个学习群,参与的学习者有 292 人。另外,第 26 期组队学习也蓄势待发准备与大家…

subst将文件夹目录虚拟成虚拟磁盘
SUBST [drive1: [drive2:]path]SUBST drive1: /Ddrive1: 指定要指派路径的虚拟驱动器。[drive2:]path 指定物理驱动器和要指派给虚拟驱动器的路径。/D 删除被替换的 (虚拟) 驱动器。不加任何参数键入 SUBST,可以显示当前虚拟驱动器的清单。本文…

UI设计学习的对比原则怎么运用?
本期小编为大家介绍的UI设计培训教程就是关于UI设计学习的对比原则怎么运用?因为在UI设计中分组原则这一项在文字排版中运用的几率是比较频繁的,并且分组对于层次感和整合信息都有一定的帮助,但是光有分组还远远不够,尤其是零基础学ui我们还…

silverlight数据库应用程序开发
该解决方案使用的是"silverlight导航应用程序Oracle数据库WebService服务” 新建silverlight项目GH,同时会自动添加一个GH.Web,在GH.Web中添加"web 服务",同时需要添加两个XML文件用于解决跨域问题: 第一个XML文件:…

如何设置matplotlib中x,y坐标轴的位置?
在机器学习中经常会使用Sigmoid函数,如果直接使用matplotlib绘图,那么就会像下图这样,原点并没有在(0,0)。 import matplotlib.pyplot as plt import numpyx numpy.linspace(start-10, stop10) y 1 / (1 numpy.e ** (-1 * x))plt.plot(x,…

Python中的类、模块和包究竟是什么?
Python培训教程:Python中的类、模块和包究竟是什么?在Python和其他编程语言中,都有类似或相同的概念,如对象、类、模块、包,名称都是一样的,只不过会有细微的一些区别,正是因为有这些存在,才使…

Test class should have exactly one public constructor解决办法
测试类用的junit,在eclipse中执行ok,在maven编译就挂 Error MessageTest class should have exactly one public constructor Stacktracejava.lang.Exception: Test class should have exactly one public constructorat org.junit.runners.BlockJUnit4C…

中矿大新生赛 A 求解位数和【字符串】
时间限制:C/C 1秒,其他语言2秒空间限制:C/C 32768K,其他语言65536K64bit IO Format: %lld题目描述 给出一个数x,求x的所有位数的和。输入描述: 第1行输入组数T,代表有T组数据。第2-T1行,每行输入…

学软件测试的优势有哪些
软件测试培训岗在各大招聘网站上越来越多,很多公司都对软件测试这个岗位有需求,那么具体学软件测试的优势有哪些呢?来看看下面的详细介绍就知道了。 软件测试培训:学软件测试的优势有哪些? 工作起点高,发展空间大 开始工作即进入…

C++项目中的extern C {}
2010-07-10 19:45 by 吴秦, 92864 阅读, 22 评论, 收藏, 编辑 引言 在用C的项目源码中,经常会不可避免的会看到下面的代码: ?123456789#ifdef __cplusplusextern "C" { #endif/*...*/#ifdef __cplusplus}#endif它到底有什么用呢,你…

C# 自定义事件和委托
http://www.cnblogs.com/huomm/archive/2007/12/04/982869.html 转载于:https://www.cnblogs.com/xxvv/archive/2012/09/22/3648589.html

参加UI培训有发展吗?
UI设计岗在最近的很多招聘网上都越来越多,逐渐引起了很多人的关注,大家都想知道转行参加UI培训有发展吗?本篇文章就和大家分享一下。 参加UI培训有发展吗? 先来看看UI设计的现状,UI设计行业这几年发展非常快,目前已经初具规模&a…

lampp开机启动
安装好之后,输入以下命令即可: ln -s /opt/lampp/lampp /etc/rc.d/rc3.d/S99lampp ln -s /opt/lampp/lampp /etc/rc.d/rc4.d/S99lampp ln -s /opt/lampp/lampp /etc/rc.d/rc5.d/S99lampp转载于:https://www.cnblogs.com/imkun/archive/2012/09/23/269929…

Properties类读写配置文件
Properties类读写简单配置文件相当的方便,以前竟然没注意到这个类。 FileInputStream fs new FileInputStream("config.ini"); Properties pros new Properties(); pros.load(fs); pros.setProperty("test", &…

如何在Jupyter Lab中显示pyecharts的图形?
这篇图文是《如何利用pyecharts绘制酷炫的桑基图?》的补充。 在这篇图文中给出的代码是使用pycharm调试的,而自己分享的时候,是使用Jupter Lab。 如果沿用这篇文章的代码,渲染后的图形仍然需要到sankey.html文件中查看ÿ…

参加web前端培训要学会哪些技能
想要成为一名合格的web前端程序猿,要学习的东西有很多,那么参加web前端培训要学会哪些技能呢?来看看下面的详细介绍就知道了。 参加web前端培训要学会哪些技能?想从事web前端开发,只会HTML、CSS和JavaScript这三个要素是远远不够的。身为一…

微软的研发思路发生改变了 Visual Studio 2012 Update 1抢先看
随着微软上周正式发布Visual Studio 2012,微软公司随即宣布了他们的下一版本。Update 1的CTP(社区技术预览)版预计本月底可用,而Update 1的最终版应该2012年底可用。微软曾表示,他们希望在VS2012上实现的若干目标之一是…

json的序列化与反序列化
json 是一种轻量级的数据交换格式,也是完全独立于任何程序语言的文本格式。 本文介绍json字符串的序列化与反序列化问题。 序列化 是指将变量(对象)从内存中变成可存储或可传输的过程。反序列化 是指将变量内容从序列化的对象重新读到内存里…

socket 995 错误 boost
这个错误的中文解释是:由于线程退出或应用程序请求,已中止 I/O 操作。 最近几天学习boost asio 在抄官方的一个实例代码时遇到 了,这个错误搞了我三天才解决,就是在一行代码中少了一个 s 所致。 正确的代码是这样 的 boost::asio:…

几何图形在logo设计中的有哪些情感意义?
作为一名合格的UI设计师,工作中遇到的问题有很多,例如logo设计,是很多UI设计师的一个日常工作之一,小编今天为大家介绍的UI设计培训教程就是几何图形在logo设计中的有哪些情感意义?希望能够帮助到大家。 UI设计培训教程ÿ…

Linux自学笔记——haproxy
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠地一套解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完…

如何利用pyecharts绘制炫酷的关系网络图?
如何利用pyecharts绘制炫酷的关系网络图 这是本学期在大数据哲学与社会科学实验室做的第六次分享了。 第一次分享的是: 如何利用“wordcloudjieba”制作中文词云? 第二次分享的是: 如何爬取知乎中问题的回答以及评论的数据? …

设Excle的cell中显示一个下拉列表选择框
描述:我想让excle的sheet页中的B列的每个cell输入内容的时候将A列所有行的内容作为下拉列表的选择内容 效果如下: 实现的步骤如下: 1.点击B列的头,选中整列 2.点击菜单栏的“数据”-》“数据有效性”,弹出如下的对话框…

Python培训中有哪些是必须学的运算符
不管是学Python技术还是其他的编程技术,运算符的学习都是少不了的,本期小编为大家推荐的教程就是关于Python培训中有哪些是必须学的运算符?来看看下面的详细介绍内容。 Python培训中有哪些是必须学的运算符? 布尔值:值只有两个,…