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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ysdolls 于 2014-8-3 13:55 编辑

/*一直以为对象的引用地址就是由hashcode来决定的
所以hashcode相同那地址就是一样的
今天看了老毕的14天视频,在讲hashset的时候产生了疑问
原来我以前一直是错误的 hashcode并不是地址值
*/

大家曾经有和我一样这么认为的嘛。。。。


public class hashset {
        public static void main(String[] args){

        Person p1 =new Person();
        Person p2 =new Person();
        Person p3 =new Person();
        //创建三个Person对象
        p1.name="wangwu";
        //给p1名字 如果hashcode代表的就是地址值 那相同hashcode的对象应该同时赋值name
        sop(p1.toString());
        sop(p2.toString());
        sop(p3.toString());
        //先输出 三个对象getClass().getName() + '@' + Integer.toHexString(hashCode())
        sop(p1.name);
        sop(p2.name);
        sop(p3.name);
        //输出三个对象的名字 对比名字是否相同


        }

        public static void sop(Object obj){
                System.out.println(obj);
        }
}
public class Person {
        String name ;

        public int hashCode(){
                return 60;
        }
}
附带一句 刚刚百度 知道了 物理地址 在java中我们是获取不到的 全都交由jvm 管理
java中 并不直接对指针操作

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1

查看全部评分

1 个回复

倒序浏览
哈希值当然不是地址值,但地址值可以是哈希值。其实任意整数都可以是哈希值,所以允许你重写hashCode方法,只是由此得到的哈希函数有好与坏的差异
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马