【发布时间】:2012-09-27 02:50:45
【问题描述】:
例如,如果我有
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 会在内存中逐位比较对象的实际二进制结构吗?
【问题讨论】:
-
不,它会查看它们是否在内存中占据相同的位置。就这样。这就是为什么你应该使用
equal来比较对象。 -
@assylias:C# 支持运算符重载。 Java 没有。
-
@Eric 我链接到的答案同时涉及 Java 和 C# - 这可能会令人困惑。这是一个更好的链接:stackoverflow.com/questions/2772763/…
-
@RichardJPLeGuen 我看到了编辑,并回滚但随后应用了您的一些更改。问题是,我没有足够的知识以与您相同的方式提出问题,因此没有您知识(关键字、措辞等)的人可能无法使用更简单的术语找到问题。
标签: java conditional