A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张金 中级黑马   /  2012-11-13 10:57  /  2248 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张金 于 2012-11-24 13:52 编辑

toString方法,hashcode方法,equals方法这三个方法好像经常在一起出现,但他们三者究竟有什么关系,有没有一个很好的案例,能很好的理解这三者的关系,以及作用了。

4 个回复

倒序浏览
三者之间没必然的关系吧,只是用的比较多而已,都可以覆写的。
toString()一般返回对象在内存的地址。
hashCode()一般返回哈希吗。
equals()则是同另外的对象比较而已,但是如果没有覆写,比较的是内存地址。
回复 使用道具 举报
没有什么必然的联系。2L已经给你解释了
回复 使用道具 举报
toString()是用来打印的比如System.out.print(new A());就会调用A类实例的toString()方法
hashCode()返回哈希值,就是类似我们常用文件的Hash、MD5。
equals()比较是否相同方法,一般都需要复写。
比较时候首先用的是hashCode(),加入两个的hashCode()值一样那就是相同的
假如不一样就会继续调用equals()方法,equals()方法返回真就是相同否则就是不同的
回复 使用道具 举报
     toString()方法返回对象的字符串表示,方便用户获得有关对象状态的基本信息。
   hashCode()返回的对象是散列码,每一个对象都有一个默认的散列码,值就是对象的存储地址
在object类中默认实现的是将该对象的内部地址转化成一个整数返回。如果要重新定义equals()方法,
就必须重新定义hashCode()方法。
   equals()用来判断对象是否相同,相同则返回true,否则返回false。如果要重写equals()方法,
也有必要重写hashCode(),确保通过equals方法判断结果为true的两个对象具备相等的hashCode()
返回值。
   所以,如果两个对象不equals,他们的hashCode有可能会相等,
   如果两个对象的hashCode相等,他们不一定equals,
   如果两个对象的hashCode不等,则他们一定不equals。

   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马