当前位置: 技术问答>java相关
大家看看下面程序的输出结果是什末?为什末?
来源: 互联网 发布时间:2015-04-25
本文导语: class Value { int i; } public class EqualsMethod{ public static void main(String[] args) { Value v1 = new Value(); Value v2 = new Value(); v1.i = v2.i = 100; System.out.println(v1.equals(v2)); } } | ...
class Value {
int i;
}
public class EqualsMethod{
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
v1.i = v2.i = 100;
System.out.println(v1.equals(v2));
}
}
int i;
}
public class EqualsMethod{
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
v1.i = v2.i = 100;
System.out.println(v1.equals(v2));
}
}
|
结果是false
因为equals比较的是对象的内容,而不是对象的句柄
因为equals比较的是对象的内容,而不是对象的句柄
|
fasle
你没有重载boolean equals(Object o)方法
程序将调用类Object 的equals方法,该方法好像是根据hash值判断是否相等。
可以这样写
class Value {
int i;
public boolean equals(Object o) {
if(o==null||!(o instanceof Value))return false;
Value v = (Value)o;
return i=v.i;
}
}
你没有重载boolean equals(Object o)方法
程序将调用类Object 的equals方法,该方法好像是根据hash值判断是否相等。
可以这样写
class Value {
int i;
public boolean equals(Object o) {
if(o==null||!(o instanceof Value))return false;
Value v = (Value)o;
return i=v.i;
}
}
|
同意楼上的!
这是两个不同的对象!
这是两个不同的对象!
|
同意,
需要重载boolean equals(Object o)方法。
需要重载boolean equals(Object o)方法。