11问答网
所有问题
JAVA中,为什么object对象中的equals方法比较的是同一,而String对象比较的是相等?
如题所述
举报该问题
推荐答案 2017-07-05
因为在java中,Object类是所有类的始祖,所有类都直接或者间接继承了它。Object类中equals方法比较的是两个对象是否具有相同的引用,如果两个对象的引用都一样(即指向同一块内存),那它们一定是相等的。
至于为什么要这样设计,因为Object没办法判断是什么来继承他,不能具体的去实现这个逻辑,因此交给它的子类自己根据自己的特征去重写这个方法。举个列子,比如定义了一个人类Person,有子类学生Student和员工Employee类,这时候Person类里面可以有name,age等这些通用的属性。但如果在Person里面定义一个简介(getIntroduction())的方法,就不好具体去叙述,这时候就可以交给子类自己去重写这个方法,比如Student类的getIntroduction()方法里面可以写“什么学校、什么专业、什么年级”等,Employee类里面就可以写“什么行业、什么职位”等。
所以Object很直接,不管你是什么类型,怎么进行比较,只要你们指向同一块内存,那你们就相等。比如String类,重写equals方法后比较的是字符串的具体值,但谁也不能否认,两个引用指向同一个地址时,值也一样相等。
---------------------刚好看到这,顺势把个人理解叙述一下,希望有用----------------
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://11.wendadaohang.com/zd/FMM8Svv28S4v42q2FS4.html
其他回答
第1个回答 2019-11-16
因为String类里面已经覆盖了equals方法。所以比较的是对象的内容,但是如果是数组的话就不行,因为数组没有覆盖equals方法,所以比较的是对象的引用。覆盖的代码如下
@Override
public boolean equals(object obj){
if(obj instanceof Employee){
return this.id = ((Employee)obj).id;
else
return false;
}
第2个回答 2017-06-18
类Object
equals方法对于任何非空的参考值x和y,此方法返回true当且仅当x和y引用同一个对象(x
== y有价值true)。
本回答被网友采纳
相似回答
...的区别? 还有
equals为什么
在
String
类型
中比较
答:
没错,所有类都是Object子类。自己写的也是,只是隐藏罢了。
equals只要值相等即可,==可理解为不但值相等,地址也要相等(针对对象)
。因为String不是基本类型,他相当于指针。重写equals,表示内容相同即可,hashcode是针对字符串本身,而不是地址。例如:String p="123",q="123"; 此处equals和==结果...
大家正在搜
相关问题
Java中Object.equals和String.equa...
java中所有类都是Object的子类吗? 谁能给我讲讲==...
java 中String类型在比较时,为什么用equals ...
关于Java中equals()方法的使用。为什么比较内容相同...
java:string中调用的equals方法已经重写了Ob...
java中,父类Object的“equals()方法”和“=...
Object类的equals()是怎么实现对象的比较的?
JAVA中Object类 equals()方法和“==”怎样...