黑马程序员技术交流社区

标题: hashCode()值是否代表对象? [打印本页]

作者: smile_joe    时间: 2013-4-19 23:34
标题: hashCode()值是否代表对象?
本帖最后由 smile_joe 于 2013-4-20 19:21 编辑


  1. public class Test1 {
  2.         public static void main(String[] agrs) {
  3.                
  4.                 Student s=new Student("tom",26);
  5.                 int i=s.hashCode();
  6.                 System.out.println(Integer.toHexString(i));
  7.                 System.out.println(s);

  8.         
  9.         
  10.         }
  11. }
  12. class Student {
  13.         
  14.         String name;
  15.         int age;
  16.         Student() {}
  17.         Student(String name,int age) {
  18.                 this.name=name;this.age=age;
  19.         }
  20. }
复制代码
在对象打点调用hashCode()得到的值,转成16进制(用Integer.toHexString)方法得到的字符与该对象的@后的地址值一样,那hashCode值是否能代表这个对象?...
作者: 续圆凯    时间: 2013-4-20 00:43
一个对象的HashCode就是一个简单的Hash算法的实现,默认的实现是将对象内部地址转化为整数作为HashCode,这当然能保证每个对象具有不同
的HasCode,因为不同的对象内部地址肯定不同。
一个对象通过hashCode能返回一个唯一的值。
作者: Neverbelazy    时间: 2013-4-20 00:48
不能这样理解
hashCode()是一个方法,这个方法返回什么是由{}中的内容决定的,这也是方便了我们之后在自定义的类中复写已适应我们自己的需求.
一个需要复写的例子就是将一个自定义类存入HashSet,其具有Comparable特性就要实现对hashCode()和equals()函数的复写。
作者: 董霁辉    时间: 2013-4-20 02:43
标题: 同一个问题问了2次 请查看链接 lz的另一个问题
本帖最后由 董霁辉 于 2013-4-20 02:44 编辑

http://bbs.itheima.com/forum.php ... id=46690&pid=297810
作者: smile_joe    时间: 2013-4-20 21:40
续圆凯 发表于 2013-4-20 00:43
一个对象的HashCode就是一个简单的Hash算法的实现,默认的实现是将对象内部地址转化为整数作为HashCode,这 ...

非常感谢你的帮助....
作者: smile_joe    时间: 2013-4-20 21:41
Neverbelazy 发表于 2013-4-20 00:48
不能这样理解
hashCode()是一个方法,这个方法返回什么是由{}中的内容决定的,这也是方便了我们之后在自定 ...

非常感谢你的帮助....




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