=方法是. lang。对象类的方法。
有两种用法说明:
(1)对于字符串变量来说,使用“==焙汀?()”方法比较字符串时,其比较方法不同。
"=="比较两个变量本身的值,即两个对象在内存中的首地址。
" equals()“比较字符串中所包含的内容是否相同。
比如:
字符串s1、s2、s3=癮bc”, s4=癮bc”; s1=新的字符串(“abc”); s2=新的字符串(“abc”);
那么:
s1==s2是假//两个变量的内存地址不一样,也就是说它们指向的对象不一样,故不相等。 s1.equals (s2)是真正的//两个变量的所包含的内容是abc,故相等。
注意(1):
如果:,,,,,,,,,<代码> StringBuffer s1=new StringBuffer (“a”); 代码>
,,,,,,,,,,,,,,,,,,,,<代码> StringBuffer s2=new StringBuffer (“a”); 代码>
结果:,,,,,,,,,<代码> s1.equals (s2)//是假代码>
解释:
StringBuffer类中没有重新定义=这个方法,因此这个方法就来自对象类,而对象类中平等的方法是用来比较”地址”的,所以等于错误的。
注意(2):
对于s3和s4来说,有一点不一样要引起注意,由于s3和s4是两个字符
串常量所生成的变量,其中所存放的内存地址是相等的,
所以s3==s4是真实的(即使没有s3=s4这样一个赋值语句)
(2)对于非字符串变量来说,“==焙汀?狈椒ǖ淖饔檬窍嗤亩际怯美幢冉掀涠韵笤诙涯诖娴氖椎刂?即用来比较两个引用变量是否指向同一个对象。
比如:
A类 { 其中obj1=new (); methoda=new (); }
那么:其中obj1==methoda是假
,,,,,,,,,,obj1.equals methoda()是假
但是如加上这样一句:其中obj1=methoda;
那么,其中obj1==obj2 是真正的
,,,,,,,,obj1.equals methoda()是真正的
总之:=方法对于字符串来说是比较内容的,而对于非字符串来说是比较其指向的对象是否相同的。
,==比较符也是比较指向的对象是否相同的也就是对象在对内存中的的首地址。
字符串类中重新定义了=这个方法,而且比较的是值,而不是地址。所以是真的。
关于等于与==的区别从以下几个方面来说:
(1)如果是基本类型比较,那么只能用==来比较,不能用=
比如:
公开课TestEquals { 公共静态void main (String [] args) { int=3; int b=4; int c=3; system . out。println (a==b);//结果是错误的 system . out。println (==c);//结果是真的 System.out.println (a.equals (c));//错误,编译不能通过,等于方法//不能运用与基本类型的比较 } }
(2)对于基本类型的包装类型,比如布尔,性格,字节,射击,整数,长,浮动,双等的引用变量,==是比较地址的,而=是比较内容的。比如:
公开课TestEquals { 公共静态void main (String [] args) { 整数n1=new整数(30); 整数n2=new整数(30); 整数n3=new整数(31); system . out。println (n1==n2);//结果是假两个不同的整数对象,故其地址不同, system . out。println (n1==n3);//那么不管是新的整数(30)还是新的整数(31)结果都显示假的 System.out.println (n1.equals (n2));//结果是真正的根据jdk文档中的说明,n1与n2指向的对象中的内容是相等的,都是30岁,故=比较后结果是真的 System.out.println (n1.equals (n3));//结果是假因对象内容不一样,一个是30一个是31 } }
这是整数的实例,如果是其他的比如翻倍,性格,浮动等也一样。
(3)注意:对于字符串(字符串),StringBuffer(线程安全的可变字符序列),StringBuilder(可变字符序列)这三个类作进一步的说明。
(a)首先,介绍字符串的用法,请看下面的实例:
公开课TestEquals { 公共静态void main (String [] args) { 字符串s1=" 123 "; 字符串s2=" 123 "; 字符串s3=癮bc”; 字符串s4=新的字符串(“123”); 字符串s5=新的字符串(“123”); 字符串s6=新的字符串(“abc”); system . out。println (s1==s2);//(1)真的 System.out.println (s1.equals (s2));//(2)真实的 system . out。println (==s1);//(3)误 System.out.println (s1.equals (s3));//(4)误 system . out。println (s4==s5);//(5)误 System.out.println (s4.equals (s5));//(6)真的 system . out。println (s4==s6);//(7)误 System.out.println (s4.equals (s6));//(8)误 system . out。println (s1==s4);//(9)假的 System.out.println (s1.equals (s4));//(10)真的 } }浅谈java中==以及=方法的用法