在哪些情况下,对于未重写equals()的类型的对象,Java引用相等可能不同于equals()相等?
有没有什么神奇的东西在任何地方都能说明这一点在哪些情况下,对于未重写equals()的类型的对象,Java引用相等可能不同于equals()相等?,java,Java,有没有什么神奇的东西在任何地方都能说明这一点 (object0 == object1) != (object0.equals(object1)) 其中object0和object1都是未重写Object.equals()?否,如果未重写equals(),则如果对象是内存中相同的对象,则返回true。否,如果未重写equals(),如果对象是内存中相同的对象,则返回true。Object.java src将其equals方法定义为 return (this == obj) 因此no:-)Ob
(object0 == object1) != (object0.equals(object1))
其中object0和object1都是未重写Object.equals()?否,如果未重写
equals()
,则如果对象是内存中相同的对象,则返回true。否,如果未重写equals()
,如果对象是内存中相同的对象,则返回true。Object.java src将其equals方法定义为
return (this == obj)
因此no:-)Object.java src将其equals方法定义为
return (this == obj)
因此,否:-)否。
object0的实际类(不一定是声明的变量类型)必须已重写equals()
。尝试打印:
object0.getClass()
否。object0的实际类(不一定是声明的变量类型)必须已重写equals()
。尝试打印:
object0.getClass()
不,这正是Object的定义
…当且仅当x和y引用同一对象(x==y的值为true)时,此方法返回true
不,这正是Object的定义
…当且仅当x和y引用同一对象(x==y的值为true)时,此方法返回true
以下是Object.equals的源代码:
public boolean equals(Object obj) {
151 return (this == obj);
152 }
153
不,这里是Object.equals的源代码:
public boolean equals(Object obj) {
151 return (this == obj);
152 }
153
因此,不。是的,如果“object0
的类型没有覆盖Object.equals()
”表示的是特定类型,而不是超类
如果object0
和object1
属于类型B,B扩展A,A覆盖equals(Object obj)
但B不覆盖,那么B可能不覆盖equals(Object obj)
但(object0==object1)!=(object0.equals(object1))
是,如果“object0
的类型没有覆盖Object.equals()
”表示特定类型,而不是超类
如果
object0
和object1
属于类型B,B扩展A,A覆盖equals(Object obj)
但B不覆盖,那么B可能不覆盖equals(Object obj)
但(object0==object1)!=(object0.equals(object1))
如果object0==null
和object1==null
,第一个将传递true
,第二个将传递NullPointerException
。除此之外,应该没有明显的差异。好吧,如果object0==null
和object1==null
,第一个将传递true
,第二个将传递NullPointerException
。除此之外,应该没有明显的差异。尽管对象本身不重写equals()
方法,但对象的一个超类可能重写equals()
方法
如果您使用的是eclipse:打开
object.java
文件并按control-o两次。键入“equals”并检查是否只看到一个“equals”方法:对象的equals方法。虽然对象不重写equals()
本身,但对象的一个超类可能重写equals()
方法
如果您使用的是eclipse:打开
object.java
文件并按control-o两次。键入“equals”并检查是否只看到一个“equals”方法:Object的equals方法。是的,null==null
为真,但null.equals(null)
未定义。是的,null==null
为真,但null.equals(null)
未定义。@egaga。它被定义为。。。抛出NullPointerException@伊加加。它被定义为。。。抛出NullPointerException!