当前位置:首页 > 图灵资讯 > 技术篇> 原创 Java基础"=="和equals方法究竟有什么区别?
原创 Java基础"=="和equals方法究竟有什么区别?
发布时间:2021-12-09 11:44:50
Java基本原理"=="和equals方法的区别是什么?分别将一件事说清楚,然后说清楚另一件事,这样,两者的区别自然就会出来,混用起来说,这就很难说明==运算符是用来比较两个变量的值是否相等的。也就是说,用来比较该变量在存储器中的值是否相同,只使用==运算符来比较两个基本类型的数据或两个引用变量是否相等。
若变量所指向的数据是对象类型的,此时就涉及到两个内存块,该对象本身将占用一块内存(堆内存),变数还占用一块内存,比如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方法继承,该方法的实现代码如下:
实现Object类的equals方法。
它表明了一个类本身不定义equals方法,其缺省equals方法(继承自Object类)使用==运算符,还可以用来比较两个变量所指向的对象是否相同,此时使用equals并使用==得到相同的结果。当两个单独的对象进行比较时,返回总false。假如您写的类想要比较。
这个类创建的两个实例对象的内容是否相同,那么您必须覆盖equals方法,并且您需要自己编写代码以确定两个对象的内容是相同的。
最新资讯
查看更多-
1
Redis的内存淘汰策略有哪些?
-
2
【Java开发工具】EaseAgent Java 系统代理组件
-
3
图灵教育诸葛院长:助力学员成就IT职业发展美好未来!
-
4
【Java面试题】Java开发Spring常见面试题及答案分享
-
5
Java开发语言与C语言C++有什么区别?
-
6
如何选择Offer——什么样的Offer才是你人生中最好的解决方案?
-
7
【Java开发工具】gson-plugin 辅助 Gson 库的 Gradle 插件
-
8
【Java面试题】Java开发面试基础笔试题及答案分享
-
9
成为Java架构师需要具备哪些能力?
-
10
【图灵课堂】SpringBoot集成MyBatis的各种方式全面解析