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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张翼 黑马帝   /  2011-11-13 14:15  /  1683 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
class Demo
{
        public int hashCode()
        {
                return 199;
        }
}
class acc
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        public static void main(String[] args)
        {
                Demo d1=new Demo();
                Demo d2=new Demo();//在这里明明是定义了两个不同的对象,可是在输出的时候结果是
                                          //一样的,都是Demo@c7 ,Demo@c7,这是怎么回事?
class Demo
{
        public int hashCode()
        {
                return 199;
        }
}
class acc
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        public static void main(String[] args)
        {
                Demo d1=new Demo();
                Demo d2=new Demo();
                sop(d1);
                sop(d2);
        }
}
                sop(d1);
                sop(d2);
        }
}

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 hashcode返回值。

查看全部评分

5 个回复

倒序浏览
坚强 黑马帝 2011-11-13 14:40:42
沙发
  你这个程序该怎么看啊,重复了2遍?
回复 使用道具 举报
本帖最后由 宋文轩 于 2011-11-13 15:11 编辑

直接打印对象,打印出来的是  对象类型@哈希值  这种形式 ,上面的类重写了hashCode()方法 并且返回的值都是一个。这样new对象的时候算内存地址值的时候拿到的都是199,所以打印出来的是一个值。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
我觉得很好笑,你为什么要重写hashCode()方法?重写了以后有什么效果难道自己不知道?不知道还要重写?我深表怀疑,一个技术分都到20了还问这样的问题,而且还有技术分...
回复 使用道具 举报
张翼 黑马帝 2011-11-13 18:21:39
报纸
这是老师强调的问题,也许我知道答案,但是我希望听听别人的看法。
回复 使用道具 举报
张翼 黑马帝 2011-11-13 18:23:11
地板
坚强 发表于 2011-11-13 14:40
你这个程序该怎么看啊,重复了2遍?

笔误,上面那个sop方法可以不需要
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马