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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© smile_joe 中级黑马   /  2013-4-19 23:34  /  1865 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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值是否能代表这个对象?...

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

5 个回复

倒序浏览
一个对象的HashCode就是一个简单的Hash算法的实现,默认的实现是将对象内部地址转化为整数作为HashCode,这当然能保证每个对象具有不同
的HasCode,因为不同的对象内部地址肯定不同。
一个对象通过hashCode能返回一个唯一的值。
回复 使用道具 举报
不能这样理解
hashCode()是一个方法,这个方法返回什么是由{}中的内容决定的,这也是方便了我们之后在自定义的类中复写已适应我们自己的需求.
一个需要复写的例子就是将一个自定义类存入HashSet,其具有Comparable特性就要实现对hashCode()和equals()函数的复写。
回复 使用道具 举报

同一个问题问了2次 请查看链接 lz的另一个问题

本帖最后由 董霁辉 于 2013-4-20 02:44 编辑

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

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

非常感谢你的帮助....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马