关于重写equals方法的一个问题

nick207 2008-07-05 10:22:55
谁能说下 重写这个方法的目的是什么呢/
通常在什么情况下才需要重写呢
...全文
133 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZangXT 2008-07-06
  • 打赏
  • 举报
回复
还有要注意重写 equals方法时一般要同时重写hashCode方法,来保证equals为true的两个对象具有相同的hashcode。
ZangXT 2008-07-06
  • 打赏
  • 举报
回复
Object中equals方法实现如下:
public boolean equals(Object obj) {
return (this == obj);
}
比较两个对象是否相同,而在实际情况中,大部分是比较对象的内容是否相同,判断两个对象是否相同用==,判断对象的内容是否相同用equals(),这是就要实现自己的equals。
举个例子,String中重写了equals方法,用来比较两个字符串是否相同。
看个简单的情况,应该能明白了:
public class Test {
public static void main(String[] args) {
Object o1=new Object();
Object o2=new Object();
System.out.println(o1==o2);
System.out.println(o1.equals(o2));
String str1=new String("abc");
String str2=new String("abc");
System.out.println(str1==str2);
System.out.println(str1.equals(str2));
}
}
对于Object的对象o1和o2,应为不是相同的对象,所以前两个输出语句的结果都是false
对于String类型的对象str1和 str2,也不是相同的对象,所以str1==str2是false,而因为两个对象内容相同,所以str1.equals(str2)为true
自己再体会一下。
老紫竹 2008-07-05
  • 打赏
  • 举报
回复
父类提供的功能不满足你的要求时,或者扩充,增强父类的功能时!

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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