JAVA问题:看下面的代码:

public class Foo {
int value;
Foo(int value) {
this.value = value;
}
public boolean equals(Object obj) {
if (obj instanceof Foo) {
Foo foo = (Foo) obj;
return value == foo.value;
} else {
return false;
}
}
这是一道面试题, ArrayList list = new ArrayList();
HashSet set = new HashSet();
list.add(new Foo(1));
set.add(new Foo(1));
System.out.println(????ヤ唬镰并€?;?//乱码了,我没办法
如果输出结果第一个是true,第二个是false,答案为什么是AD?
A.list.contains(new Foo(1)) + ","+ set.contains(new Foo(1))

B.set.contains(new Foo(1)) + ","+ list.contains(new Foo(1))

C.new Foo(1).equals (new Foo(1)) + ","+ list.contains(new Foo(1))

D.new Foo(1).equals (new Foo(1)) + ","+ set.contains(new Foo(1))
答案我不记得是那个了,但我不明白,程序都没有调用equals方法,干嘛写equals方法呢?
contains方法会调用对象的equals方法
这是重写Object类的equals方物袭法,因为Object类中equals方罩桐兄法与“==”是等价轮源的,都是比较对象的物理地址。
尽管你没有显式调用equals。但contains调用了所包含对象的equals方法。
JAVA问题:看下面的代码:
← 上一篇: 下一篇: →