黑马程序员技术交流社区

标题: 通过验证,今天才知道,hashcode一样,对象物理地址并不同 [打印本页]

作者: ysdolls    时间: 2014-8-3 13:50
标题: 通过验证,今天才知道,hashcode一样,对象物理地址并不同
本帖最后由 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中 并不直接对指针操作

作者: fantacyleo    时间: 2014-8-3 14:13
哈希值当然不是地址值,但地址值可以是哈希值。其实任意整数都可以是哈希值,所以允许你重写hashCode方法,只是由此得到的哈希函数有好与坏的差异




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