java中equals方法和“==”的比较

java中equals方法和“==”的比较

ID:39551624

大小:39.00 KB

页数:4页

时间:2019-07-06

java中equals方法和“==”的比较_第1页
java中equals方法和“==”的比较_第2页
java中equals方法和“==”的比较_第3页
java中equals方法和“==”的比较_第4页
资源描述:

《java中equals方法和“==”的比较》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、java中equals方法和“==”的比较equals方法是java.lang.Object类的方法。有两种用法说明:(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。“==”比较两个变量本身的值,即两个对象在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。比如:Strings1,s2,s3="abc",s4="abc";s1=newString("abc");s2=newString("abc");那么:s1==s2;//false两个变量的内存地址不一样,也就是

2、说它们指向的对象不一样,故不相等。s1.equals(s2)是true//两个变量的所包含的内容是abc,故相等。注意(1):如果:StringBuffers1=newStringBuffer("a");StringBuffers2=newStringBuffer("a");结果:s1.equals(s2)//是false解释:StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,而Object类中的equals方法是用来比较“地址”的,所以等于false.注意(2):对于s3和s4来说,

3、有一点不一样要引起注意,由于s3和s4是两个字符串常量所生成的变量,其中所存放的内存地址是相等的,所以s3==s4是true(即使没有s3=s4这样一个赋值语句)(2)对于非字符串变量来说,"=="和"equals"方法的作用是相同的都是用来比较其对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。比如:classA{Aobj1=newA();Aobj2=newA();}那么:obj1==obj2是falseobj1.equals(obj2)是false但是如加上这样一句:obj1=obj2;那么obj1==obj2是

4、trueobj1.equals(obj2)是true总之:equals方法对于字符串来说是比较内容的,而对于非字符串来说是比较其指向的对象是否相同的。==比较符也是比较指向的对象是否相同的也就是对象在对内存中的的首地址。String类中重新定义了equals这个方法,而且比较的是值,而不是地址。所以是true。关于equals与==的区别从以下几个方面来说:(1)如果是基本类型比较,那么只能用==来比较,不能用equals比如:publicclassTestEquals{publicstaticvoidmain(String[]a

5、rgs){inta=3;intb=4;intc=3;System.out.println(a==b);//结果是falseSystem.out.println(a==c);//结果是trueSystem.out.println(a.equals(c));//错误,编译不能通过,equals方法//不能运用与基本类型的比较}}(2)对于基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,==是比较地址的,而equals是比较内容的。比如:pu

6、blicclassTestEquals{publicstaticvoidmain(String[]args){Integern1=newInteger(30);Integern2=newInteger(30);Integern3=newInteger(31);System.out.println(n1==n2);//结果是false两个不同的Integer对象,故其地址不同,System.out.println(n1==n3);//那么不管是newInteger(30)还是newInteger(31)结果都显示falseSyste

7、m.out.println(n1.equals(n2));//结果是true根据jdk文档中的说明,n1与n2指向的对象中的内容是相等的,都是30,故equals比较后结果是trueSystem.out.println(n1.equals(n3));//结果是false因对象内容不一样,一个是30一个是31}}这是Integer的实例,如果是其他的比如Double、Character、Float等也一样。(3)注意:对于String(字符串)、StringBuffer(线程安全的可变字符序列)、StringBuilder(可变字符

8、序列)这三个类作进一步的说明。(a)首先,介绍String的用法,请看下面的实例:publicclassTestEquals{publicstaticvoidmain(String[]args){Strings1="123";Strings2="1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。