当前位置: 首页 > 图灵资讯 > 图灵百科> 【图灵百科】==与equals()的区别详解

【图灵百科】==与equals()的区别详解

来源:图灵教育
时间:2021-12-19 14:22:14

  Java程序设计语言是当今世界上使用最多的编程语言,它是一种面向对象的编程语言,它不但吸取了C++语言的诸多优势,同时也抛弃了C++中难懂的多重继承和指针等概念,但与其它部分编程语言相比,学习java也有许多知识难点。下面将为您分析一下“==”和“equals()”之间的差异。

<a href=https://www.tulingxueyuan.cn/tlzx/tlbk/705.html target=_blank class=infotextkey>==与equals()</a>()的区别详解

  分别讲清楚一件事,然后说清楚另一件事,这样,两者之间的区别自然就出来了,混杂起来说,很难说。

  "=="运算符专门用来比较两个变量的值是否相等,以及一种方法,即比较该变量在内存中所存储的数值是否相同,比较两个基本类型的数据或两个引用变量是否相等,只使用==运算符。

  若变量所指向的数据是对象类型的,此时就涉及到两个内存块,该对象本身将占用一块内存(堆内存),变数还占用一块内存,比如Objetobj=newObject();变量obj是内存,newObject()是另一个存储器,此时,存储在变量obj的内存中的数值就是该对象所占用的那个内存的初始地址。对一个对象类型的变量来说,如果想比较两个变量是否指向同一对象,也就是,看看这两个变量对应的内存中的数值是否相等,此时需要用==运算符来比较。

  equals方法是用来比较两个独立的对象是否一样,就像去比较两个外表是否一样,它比较两个物体是独立的。以以下代码为例:

  stringa=newString("foo");

  Stringb=newString("foo");

  2条new语句会创建两个对象,并使用a,b这两个变量分别指向它们中的一个,即两个不同的对象。这两种方法的初始地址不同,也就是a和b中存储的数值不同,因此表达式a==b返回false,而且,这两个对象的内容是相同的,因此表达式a.equals(b)将返回true。

  实际上,我们常常需要比较传递所进行的字符串的内容是否相同,比如,Stringinput=…;input.equals("quit")很多人在用==做比较时不小心,这是错误的,随便从网上找几个实战教学视频看看,其中包含了许多此类错误。请记住,对字符串进行比较主要使用equals方法。

  若类本身并不定义equals方法,则会从Object类的equals方法继承,其实现代码如下:

  booleanequals(Objecto){

  returnthis==o;

  }

  它表明了一个类本身不定义equals方法,其缺省equals方法(继承自Object类)使用==运算符,还可以用来比较两个变量所指向的对象是否相同,此时使用equals并使用==得到相同的结果。当两个单独的对象进行比较时,返回总false。

  当您编写的类想要比较这个类创建的两个实例对象的内容是否相同时,您就必须重写equals方法,这样您就可以认为这两个对象的内容是一样的。

  上面是和大家分享的“==和equals()的区别”。Java的特点是简单、面向对象、分布式、健壮、安全、平台的独立性和可移植性、多线程、动态等。Java能写出左面的应用、web应用、分布式系统、嵌入式系统等。若您想要学习Java编程语言,请通过“博学谷Java”课程。

图灵学院成立于2017年7月15日,现阶段提供 计算机基础原理、JavaSE核心、Java后端、 面试必备算法、python核心编程、数据分析、web 开发题、人工智能等专题课程,为想学习Python的学员提供优质的培训服务,帮助学员掌握更加全面的技能,是计算机人员职场中提职加薪的首选。
免费java架构师视频学习地址:免费视频