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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 青苹果 中级黑马   /  2014-5-5 23:14  /  1302 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo
{
       public int hashCode()
              {
                       return 60;
               }

}


他的父类 hashCode 却是返回的是个哈希值   我复写了他的方法 返回类型也是int类型的   为毛还是Demo@3C 这个哈希值呢   求大神们看看哈

评分

参与人数 1技术分 +1 收起 理由
Silent_memory + 1 希望代码和描述的尽量详细些

查看全部评分

5 个回复

倒序浏览
这个是结果

QQ图片20140505231724.jpg (3.35 KB, 下载次数: 22)

结果

结果
回复 使用道具 举报
本帖最后由 thinkervsruler 于 2014-5-6 01:11 编辑

您的代码大概是这样的吧:
  1. class Demo
  2. {
  3.           public int hashCode()
  4.           {
  5.              return 60;
  6.           }
  7. }
  8. public class HashSetDemo
  9. {
  10.           public static void main(String[] args)
  11.           {
  12.                      Demo d = new Demo();
  13.                      System.out.println(d);
  14.           }
  15. }
复制代码
这里直接打印对象d时,实际等效于
System.out.println(d.toString());
调用的是toString()方法,返回字符串,返回的内容则是
getClass().getName() + '@' + Integer.toHexString(hashCode())

即是:getClass().getName() + '@' + Integer.toHexString(60)
所以最后的结果就很明显了,即:Demo@3C

评分

参与人数 1技术分 +1 收起 理由
Silent_memory + 1 赞一个!

查看全部评分

回复 使用道具 举报
thinkervsruler 发表于 2014-5-5 23:47
您的代码大概是这样的吧:
这里直接打印对象d时,实际等效于System.out.println(d.toString());
调用的是to ...

后面我懂得了  为啥  这里直接打印对象d时,实际等效于System.out.println(d.toString());
调用的是toString()方法 呢?
回复 使用道具 举报
本帖最后由 thinkervsruler 于 2014-5-6 09:34 编辑
青苹果 发表于 2014-5-6 09:06
后面我懂得了  为啥  这里直接打印对象d时,实际等效于System.out.println(d.toString());
调用的是toStr ...

您到JDK API里面查询下System类,打印对象的处理就知道了System.out.println(Object obj),打印 某一对象。此方法首先调用 String.valueOf(obj) 获取打印对象的字符串值,返回 Object 参数的字符串表示形式,如果参数为 null,则字符串等于 "null";否则,返回 obj.toString() 的值,即是:
System.out.println(obj) 等于下面
System.out.println(String.valueOf(obj) )  等于下面
System.out.println(obj.toString() )
回复 使用道具 举报
这样呀 谢谢哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马