当打印一个对象的时候,默认是打印这个对象的hashcode值,这个hashcode值是不是代表一个对象的地址呢?那具有相同hashcode的对象是不是就是同一个对象呢?

解决方案 »

  1.   

    hashcode是一种根据特定划算技术出来的数,影响这种数结果的就是你输入的参数对象。然后系统会根据这个数来赋予对象物理地址。
    一个hashcode不重写方法的话对应一个对象,但是就是对象这个说法还是不科学的。
      

  2.   

    对象相同hashcode必相同,hashCode相同,对象未必相同。简单的来看,hashcode是int型,是有最大值的,如果每一个hashcode对应一个对象那对象的个数不就是有限了?这显然不合理的,一个hashcode可以对应多个对象,可以想象hashcode是一个链,每个值一个个分支,每个分支上有好多对象!
      

  3.   


            String str1 = "755BB";
            String str2 = "755Aa";
            
            System.out.println(str1+".hashCode():"+str1.hashCode());//字符串不同
            System.out.println(str2+".hashCode():"+str2.hashCode());//hashCode相等        Object ob1 = new Object();
            System.out.println(ob1);//同一个对象,地址与hashCode不等
            System.out.println(ob1.hashCode());