s******y 发帖数: 68 | 1 我记得== 只适用于数值比较
对于Object, 要用 a.equal(b)来进行比较
那么对于下面的的code, "==" 应该返回不等; "e . equal ( f )"应该返回相等
可运行的结果却是两个都不相等
== shows e and f are not equal
e . equal ( f ) shows they are not equal
这是什么原因? 谢谢 |
B*********h 发帖数: 800 | 2 o1 == o2 : only when o1 and o2 are the same object.
o1.equals(o2): implemented as {return o2 ==null ? false : o1 == o2;}by defau
lt in Object class.
【在 s******y 的大作中提到】 : 我记得== 只适用于数值比较 : 对于Object, 要用 a.equal(b)来进行比较 : 那么对于下面的的code, "==" 应该返回不等; "e . equal ( f )"应该返回相等 : 可运行的结果却是两个都不相等 : == shows e and f are not equal : e . equal ( f ) shows they are not equal : 这是什么原因? 谢谢
|
s******y 发帖数: 68 | 3 e.equal(f) 在这个case里, 依你说, 是应该等还是不等呢?
defau
【在 B*********h 的大作中提到】 : o1 == o2 : only when o1 and o2 are the same object. : o1.equals(o2): implemented as {return o2 ==null ? false : o1 == o2;}by defau : lt in Object class.
|
B*********h 发帖数: 800 | 4 were you reading my post?
【在 s******y 的大作中提到】 : e.equal(f) 在这个case里, 依你说, 是应该等还是不等呢? : : defau
|
m******y 发帖数: 102 | 5 你要在Officer class里override那个equals方法
只有你自己知道应该怎么判断相等的标准
否则by default用==比较 就是不相等
【在 s******y 的大作中提到】 : 我记得== 只适用于数值比较 : 对于Object, 要用 a.equal(b)来进行比较 : 那么对于下面的的code, "==" 应该返回不等; "e . equal ( f )"应该返回相等 : 可运行的结果却是两个都不相等 : == shows e and f are not equal : e . equal ( f ) shows they are not equal : 这是什么原因? 谢谢
|
s******y 发帖数: 68 | 6 Of course, but still a little confused, from what you said
e.equal(f) still should be true.
But why did the code return false instead
【在 B*********h 的大作中提到】 : were you reading my post?
|
B*********h 发帖数: 800 | 7 how are e and f THE same object?
e = new Officer(...);
f = new Officer(...);
different objects.
【在 s******y 的大作中提到】 : Of course, but still a little confused, from what you said : e.equal(f) still should be true. : But why did the code return false instead
|
m******y 发帖数: 102 | 8 As BulletTooth said,
the default impl of equals is
public boolean equals(Object obj) {
return (this == obj);
}
If u don't override, u will always get "false"...
【在 s******y 的大作中提到】 : Of course, but still a little confused, from what you said : e.equal(f) still should be true. : But why did the code return false instead
|
s******y 发帖数: 68 | 9 I see. Thanks you guys
【在 m******y 的大作中提到】 : As BulletTooth said, : the default impl of equals is : public boolean equals(Object obj) { : return (this == obj); : } : If u don't override, u will always get "false"...
|
s******y 发帖数: 68 | 10 thanks a lot.
【在 B*********h 的大作中提到】 : how are e and f THE same object? : e = new Officer(...); : f = new Officer(...); : different objects.
|
q*****g 发帖数: 72 | 11 one remider: always overide hashCode() method when overide() equals method
【在 s******y 的大作中提到】 : thanks a lot.
|
r*****l 发帖数: 2859 | 12 Look at the contractual relation between equals() and hash().
【在 s******y 的大作中提到】 : 我记得== 只适用于数值比较 : 对于Object, 要用 a.equal(b)来进行比较 : 那么对于下面的的code, "==" 应该返回不等; "e . equal ( f )"应该返回相等 : 可运行的结果却是两个都不相等 : == shows e and f are not equal : e . equal ( f ) shows they are not equal : 这是什么原因? 谢谢
|