在java中"=="是用来比较两者储存值的地址是否相同,比如A==B,就是比较A和B所储存值的地址是否相同。
再来看看equals()的使用
在java中有这两种情况存在:
1、使用object类中的equals()方法,这个是java中最初的equals()方法
如果你自定义一个类A,并且没有去继承其他的类,这时A中的equals()
的功能就是比较两者储存值的地址是否相同。因为所有的类都继承object
类,而object类中有equals()这样的方法
object类中的equals()方法的源代码如下:
public boolean equals(object obj)
{
return this == obj;
}
从这段代码中,我们可以再次确定,这种情况下的equals()方法的功能是
比较两者储存值的地址。
2、自定义一个类B,但B类继承了c类,而c类中的equals()方法已经被重写过
了,这种情形就需要具体情况具体分析了,但大部分被重写的equals()方
法所拥有的功能就是比较两者储存值的内容是否相同,而不再是比较地址
了。比如:创建一个String对象 String str1 = new String("1");
String str2 = new String("1");
这时str1.equals(str2)比较的就是str1和str2中储存值的内容是否相同
了,因为String类中的equals()就被重写了,但这并不意味着所有被重写
过的equals()方法都是用来比较内容的(因为目前我所遇到的只有这种情
况,如果大家有兴趣可以去多研究研究
总结:"=="就只有一种用法,而equals()有两种用法,只是所使用的环境不一样而已。