大家看看下面程序的输出结果是什末?为什末?

ouran 2002-03-28 09:42:52
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));
}
}
...全文
25 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjp009 2002-03-28
  • 打赏
  • 举报
回复
同意,
需要重载boolean equals(Object o)方法。
wangtaoyy 2002-03-28
  • 打赏
  • 举报
回复
sorry return i=v.i应该是
return i==v.i
cranberry 2002-03-28
  • 打赏
  • 举报
回复
同意楼上的!
这是两个不同的对象!
wangtaoyy 2002-03-28
  • 打赏
  • 举报
回复
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;
}
}



jianghuxiaozi 2002-03-28
  • 打赏
  • 举报
回复
结果是false
因为equals比较的是对象的内容,而不是对象的句柄

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧