黑马程序员技术交流社区

标题: 关于object的几个常用方法 [打印本页]

作者: 张金    时间: 2012-11-13 10:57
标题: 关于object的几个常用方法
本帖最后由 张金 于 2012-11-24 13:52 编辑

toString方法,hashcode方法,equals方法这三个方法好像经常在一起出现,但他们三者究竟有什么关系,有没有一个很好的案例,能很好的理解这三者的关系,以及作用了。
作者: 一身顺利    时间: 2012-11-13 11:51
三者之间没必然的关系吧,只是用的比较多而已,都可以覆写的。
toString()一般返回对象在内存的地址。
hashCode()一般返回哈希吗。
equals()则是同另外的对象比较而已,但是如果没有覆写,比较的是内存地址。
作者: 黑马_张伟    时间: 2012-11-13 13:31
没有什么必然的联系。2L已经给你解释了
作者: 廖力    时间: 2012-11-13 14:42
toString()是用来打印的比如System.out.print(new A());就会调用A类实例的toString()方法
hashCode()返回哈希值,就是类似我们常用文件的Hash、MD5。
equals()比较是否相同方法,一般都需要复写。
比较时候首先用的是hashCode(),加入两个的hashCode()值一样那就是相同的
假如不一样就会继续调用equals()方法,equals()方法返回真就是相同否则就是不同的
作者: 初艳春    时间: 2012-11-13 15:08
     toString()方法返回对象的字符串表示,方便用户获得有关对象状态的基本信息。
   hashCode()返回的对象是散列码,每一个对象都有一个默认的散列码,值就是对象的存储地址
在object类中默认实现的是将该对象的内部地址转化成一个整数返回。如果要重新定义equals()方法,
就必须重新定义hashCode()方法。
   equals()用来判断对象是否相同,相同则返回true,否则返回false。如果要重写equals()方法,
也有必要重写hashCode(),确保通过equals方法判断结果为true的两个对象具备相等的hashCode()
返回值。
   所以,如果两个对象不equals,他们的hashCode有可能会相等,
   如果两个对象的hashCode相等,他们不一定equals,
   如果两个对象的hashCode不等,则他们一定不equals。

   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2