Possible Duplicate:
Difference Between Equals and ==
例如,如果我有
MyClass foo = new MyClass();
MyClass bar = new MyClass();
if (foo == bar) {
// do something
}
if (foo < bar) {
// do something
}
if (foo > bar) {
// do something
}
如何比较 foo
和 bar
? Java 是否寻找要为 MyClass
实现的 .compareTo()
方法? Java 是否会在内存中逐位比较对象的实际二进制结构?
非常简单的算术比较运算符 ==
和 !=
比较对象引用或对象的内存地址。 >
, 和 <
和相关运算符不能与对象一起使用。
所以 ==
, !=
仅当您想确定两个不同的变量是否指向相同对象时才有用。
例如,这在事件处理程序中很有用:如果您有一个事件处理程序绑定(bind)到例如多个按钮,您需要在处理程序中确定按下了哪个按钮。在这种情况下,您可以使用 ==
.
您询问的类型的对象比较是使用类似 .equals
的方法捕获的,或特殊用途的方法,如 String.compareTo
.
值得注意的是默认的Object.equals
方法等同于==
:它比较对象引用;这包含在 the docs 中. Java 中内置的大多数类都会覆盖 equals
有自己的实现:例如,String
覆盖 equals
一次比较一个字符。获得更具体/有用的 .equals
实现对于您自己的对象,您需要覆盖 .equals
具有更具体的实现。