欢迎来到天天文库
浏览记录
ID:39551624
大小:39.00 KB
页数:4页
时间:2019-07-06
《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
此文档下载收益归作者所有