黑马程序员技术交流社区

标题: set类问题 [打印本页]

作者: 张翼    时间: 2011-11-13 14:15
标题: set类问题
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);
        }
}
作者: 坚强    时间: 2011-11-13 14:40
  你这个程序该怎么看啊,重复了2遍?
作者: 宋文轩    时间: 2011-11-13 15:10
本帖最后由 宋文轩 于 2011-11-13 15:11 编辑

直接打印对象,打印出来的是  对象类型@哈希值  这种形式 ,上面的类重写了hashCode()方法 并且返回的值都是一个。这样new对象的时候算内存地址值的时候拿到的都是199,所以打印出来的是一个值。
作者: 张志东    时间: 2011-11-13 18:01
我觉得很好笑,你为什么要重写hashCode()方法?重写了以后有什么效果难道自己不知道?不知道还要重写?我深表怀疑,一个技术分都到20了还问这样的问题,而且还有技术分...
作者: 张翼    时间: 2011-11-13 18:21
这是老师强调的问题,也许我知道答案,但是我希望听听别人的看法。
作者: 张翼    时间: 2011-11-13 18:23
坚强 发表于 2011-11-13 14:40
你这个程序该怎么看啊,重复了2遍?

笔误,上面那个sop方法可以不需要




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