自定义了一个Point类,实例化出来两个对象,为什么他们的引用是一样的?

解决方案 »

  1.   

    你没有重写tostring方法,所以就会调用父类object的tostring方法,该方法的具体实现是 
    getClass().getName() + '@' + Integer.toHexString(hashCode())
     hashcode也没有重写,也是调用父类的hashcode方法,所以结果就是一样的
      

  2.   

    一楼正解,你这样问应该是问为什么他们地址会一样吧?
    他们地址是不一样的;
    输出一样的值,是因为object类hashcode这个方法的原因,这个方法的返回值和内存地址没有等价关系,更具体的可以百度一下。
      

  3.   

    楼主的hashcode显示只有3位,三楼的那位咋就那么长呢?
      

  4.   

    System.out.print(p1)和System.out.print(p1.toString())是等价的,因为,你没有重写Point的toString方法,所以,调用Object类的toString,Object类的toString源码如下:public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
    public native int hashCode();
      

  5.   

    你没有重写tostring方法,所以就会调用父类object的tostring方法,该方法的具体实现是 
    getClass().getName() + '@' + Integer.toHexString(hashCode())
     hashcode也没有重写,也是调用父类的hashcode方法,所以结果就是一样的