java - 在 Java 中使用 ==、>、< 等比较两个相同类型的对象时会发生什么?

标签 java conditional

<分区>

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
}

如何比较 foobar? Java 是否寻找要为 MyClass 实现的 .compareTo() 方法? Java 是否会在内存中逐位比较对象的实际二进制结构?

最佳答案

非常简单的算术比较运算符 ==!=比较对象引用或对象的内存地址。 > , 和 <和相关运算符不能与对象一起使用。

所以 == , !=仅当您想确定两个不同的变量是否指向相同对象时才有用。

例如,这在事件处理程序中很有用:如果您有一个事件处理程序绑定(bind)到例如多个按钮,您需要在处理程序中确定按下了哪个按钮。在这种情况下,您可以使用 == .

您询问的类型的对象比较是使用类似 .equals 的方法捕获的,或特殊用途的方法,如 String.compareTo .

值得注意的是默认的Object.equals方法等同于== :它比较对象引用;这包含在 the docs 中. Java 中内置的大多数类都会覆盖 equals有自己的实现:例如,String覆盖 equals一次比较一个字符。获得更具体/有用的 .equals 实现对于您自己的对象,您需要覆盖 .equals具有更具体的实现。

关于java - 在 Java 中使用 ==、>、< 等比较两个相同类型的对象时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12754870/

相关文章:

kubernetes pod 内的 java 进程以 pid1 运行

c# - Ninject 基于参数类型的条件绑定(bind)

performance - 从 Perl 中的文本文件读入时跳过标题的最佳方法?

java - 使用 xor 运算符进行 boolean 检查是一种好习惯吗?

java - 二叉树通用比较

java - 调用函数

java - 是否可以在具有不同 ID 的 Eclipse 插件中使用相同的包和类名?

java - 如何使用 CP Optimizer 对提货和送货操作的容量约束进行建模?

javascript - 在三元运算符 '&&' 和 '||' 上使用 ('?' 和 ':' 有什么区别)?

excel - 如何将 Excel 2010 中的条件格式复制到基于其他单元格内容的其他单元格?