Java中关于equals方法的疑问。

问:既然==比较的是地址?为什么会是true?
既然equals方法比较的是内容,为什么是false?

这块内容笔试经常问到了,我总结过:
==比较的是引用地址,也就是完全相同。
equals()是Object类的一个方法,java中所有类都是Object的子类,也就自然继承了该方法。默认equals()方法就是==。(可以自己去看下Object类的源码)
String类重写了equals()方法,比较的不是==,而是值的相等。(String类源码可见)

这段代码里,两个A对象m和n,引用地址不同,不==,也就不equals();连个String对象,如上所述,由于重写了equals()方法,所以为true。
记着采纳。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-21
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
这里a和b的值是相同的
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
这里很明显是new了两个不同的对象本回答被提问者采纳
第2个回答  2014-08-21
新创建new了 ,比较的是对象的地址

关于java中equals方法的疑惑
obj1.equals(obj2) 是true 总之:equals方法对于字符串来说是比较内容的,而对于非字符串来说是比较 其指向的对象是否相同的。== 比较符也是比较指向的对象是否相同的也就是对象在对内存中的的首地址。String类中重新定义了equals这个方法,而且比较的是值,而不是地址。所以是true。

java中equals和==的使用有什么要注意的?
在Java编程中,`equals`和`==`操作符是用于比较对象的重要工具,但它们的使用方式和功能并不相同。`==`操作符专门用于比较基本数据类型或引用是否指向同一内存地址。例如,整数或字符串字面量使用`==`进行比较。`equals`方法则用于比较对象的内容或状态。在自定义类中,如果希望重写`equals`方法来自定...

java的equals有时候比较不了"'NULL'",怎么回事?
有可能一些是null这的空 而一些是“null”字符串

java中equals使用方法
答案:Java中的equals方法用于比较两个对象的内容是否相等。默认情况下,equals方法比较的是对象的引用,也就是内存地址。但是,许多类已经重写了这个方法,使其比较的是对象的实际值。在使用时,需要注意对象是否重写了equals方法。如果没有重写,则需要自定义比较逻辑。详细解释:1. 基本用法与意义:在Java...

javanull.equals('')会报空指针异常,''.equals(null)就不
在Java编程中,使用null和空字符串("")时,调用equals方法可能导致不同的结果和行为,主要源于null是一个特殊对象,而空字符串是已初始化的对象。具体而言,当使用null作为参数调用equals方法时,会引发空指针异常(NullPointerException),因为null不是一个有效的对象实例,无法执行任何方法调用,如equals...

JAVA中equals的定义,用法,方法重写是怎么回事
如果我理解没错的话你说的应该是最初出现在Object类里的equals方法吧。在这里我说一下我对这个方法的理解,仅供参考。这个函数的用法是:比较[调用这个方法的对象]和[方法传递进去的参数对象]是否相等。重写这个方法,意思是让你定义两个对象如何才算是相等。这样给了你极大的灵活性。因为比较两个对象...

java判断字符串相等 用s.equals(s1)。但是可能有空值的情况,用equals就...
s.equals(s1),s必须非null,否则会空指针异常;s1可以为null,在确保s1不为空时,可以用s1.equals(s)来判断;无法确定s或s1不为null时,解决办法:s != null && s.equals(s1)

编写java时,有equals判断的代码不会执行,检查没有错误。请大家帮忙
语法是 字符串1.equals(字符串2);是不是少了一个点啊??? 字符串1“这粒有个点”equals(字符串2);

equals()方法理解
同时,遵循Java规范,当重写equals方法时,也应重写hashCode方法。这是因为在哈希表中,equals为true的对象,其hashCode方法返回的整数应相同。默认的hashCode方法是基于内存地址计算的,若仅重写equals方法而未重写hashCode方法,可能违反了规范,因为即使两个对象相等,它们的内存地址通常不同,从而返回的hashCode...

java的equals提示空指针异常
str))判断字符串是否为null或者""String类型使用equals方法时,一定要记得,被equals的字符串一定要是常量,或者一定不为空,否则就会报空指针异常 比如str.equals("") 当str为空时,这里则会抛空指针异常 反过来 "".equals(str) 空字符串在前面相当于常量了, 所以str无论为什么值都不会空指针 ...

相似回答